aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorchibash <chiba@javassist.org>2014-11-20 22:57:52 +0900
committerchibash <chiba@javassist.org>2014-11-20 22:57:52 +0900
commit07c2e6440fcd9136e9dfcae08497edefe66a9bc9 (patch)
tree1f9df7e39065e2564c64698d8b50a5badd29787a /src
parent0ba6f9efdc82e386e8716d8f2b1f25a1b95580a8 (diff)
downloadjavassist-07c2e6440fcd9136e9dfcae08497edefe66a9bc9.tar.gz
javassist-07c2e6440fcd9136e9dfcae08497edefe66a9bc9.zip
fixed JASSIST-208
Diffstat (limited to 'src')
-rw-r--r--src/main/javassist/bytecode/ClassFileWriter.java13
-rw-r--r--src/test/javassist/JvstTest4.java5
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();