diff options
author | chibash <chiba@javassist.org> | 2014-11-20 22:57:52 +0900 |
---|---|---|
committer | chibash <chiba@javassist.org> | 2014-11-20 22:57:52 +0900 |
commit | 07c2e6440fcd9136e9dfcae08497edefe66a9bc9 (patch) | |
tree | 1f9df7e39065e2564c64698d8b50a5badd29787a /src | |
parent | 0ba6f9efdc82e386e8716d8f2b1f25a1b95580a8 (diff) | |
download | javassist-07c2e6440fcd9136e9dfcae08497edefe66a9bc9.tar.gz javassist-07c2e6440fcd9136e9dfcae08497edefe66a9bc9.zip |
fixed JASSIST-208
Diffstat (limited to 'src')
-rw-r--r-- | src/main/javassist/bytecode/ClassFileWriter.java | 13 | ||||
-rw-r--r-- | src/test/javassist/JvstTest4.java | 5 |
2 files changed, 15 insertions, 3 deletions
diff --git a/src/main/javassist/bytecode/ClassFileWriter.java b/src/main/javassist/bytecode/ClassFileWriter.java index 38a9c5d6..a6c8bfb0 100644 --- a/src/main/javassist/bytecode/ClassFileWriter.java +++ b/src/main/javassist/bytecode/ClassFileWriter.java @@ -145,7 +145,7 @@ public class ClassFileWriter { output.writeShort(fields.size()); fields.write(output); - output.writeShort(methods.size()); + output.writeShort(methods.numOfMethods()); methods.write(output); } catch (IOException e) {} @@ -190,7 +190,7 @@ public class ClassFileWriter { out.writeShort(fields.size()); fields.write(out); - out.writeShort(methods.size()); + out.writeShort(methods.numOfMethods()); methods.write(out); if (aw == null) out.writeShort(0); @@ -503,7 +503,14 @@ public class ClassFileWriter { output.writeInt(startPos + 2, output.getPos() - startPos - 6); } - int size() { return methodCount; } + /** + * Returns the length of the bytecode that has been added so far. + * + * @return the length in bytes. + */ + public int size() { return output.getPos() - startPos - 14; } + + int numOfMethods() { return methodCount; } int dataSize() { return output.size(); } diff --git a/src/test/javassist/JvstTest4.java b/src/test/javassist/JvstTest4.java index 13784fd7..2a60af8b 100644 --- a/src/test/javassist/JvstTest4.java +++ b/src/test/javassist/JvstTest4.java @@ -181,15 +181,19 @@ public class JvstTest4 extends JvstTestRoot { ClassFileWriter.MethodWriter mw = cfw.getMethodWriter(); mw.begin(AccessFlag.PUBLIC, MethodInfo.nameInit, "()V", null, null); + assertEquals(0, mw.size()); mw.add(Opcode.ALOAD_0); + assertEquals(1, mw.size()); mw.addInvoke(Opcode.INVOKESPECIAL, "java/lang/Object", MethodInfo.nameInit, "()V"); mw.add(Opcode.RETURN); mw.codeEnd(1, 1); mw.end(null, null); mw.begin(AccessFlag.PUBLIC, "move", "(II)V", null, null); + assertEquals(0, mw.size()); mw.add(Opcode.ALOAD_0); mw.addInvoke(Opcode.INVOKEVIRTUAL, "java/lang/Object", "toString", "()Ljava/lang/String;"); + assertEquals(4, mw.size()); mw.add(Opcode.POP); mw.add(Opcode.RETURN); mw.add(Opcode.POP); @@ -1065,6 +1069,7 @@ public class JvstTest4 extends JvstTestRoot { AnnotationsAttribute attr = new AnnotationsAttribute(cp, AnnotationsAttribute.visibleTag); Annotation a = new Annotation(anno.getName(), cp); + a.addMemberValue("value", new javassist.bytecode.annotation.StringMemberValue("file/path", cp)); attr.setAnnotation(a); m.getMethodInfo().addAttribute(attr); cc.writeFile(); |