]> source.dussan.org Git - javassist.git/commitdiff
fixed JASSIST-208
authorchibash <chiba@javassist.org>
Thu, 20 Nov 2014 13:57:52 +0000 (22:57 +0900)
committerchibash <chiba@javassist.org>
Thu, 20 Nov 2014 13:57:52 +0000 (22:57 +0900)
Readme.html
src/main/javassist/bytecode/ClassFileWriter.java
src/test/javassist/JvstTest4.java

index 354af82aed2e850fe43ea4f4c0f4092f081f578c..35ffa495369e9316033b81ff112a2ce5cd4b24ee 100644 (file)
@@ -283,7 +283,7 @@ see javassist.Dump.
 
 <p>-version 3.19
 <ul>
-<li>JIRA JASSIST-158, 205, 206, 207, 211, 212, 216, 220, 223, 224, 227, 230, 234, 235.
+<li>JIRA JASSIST-158, 205, 206, 207, 211, 212, 216, 220, 223, 224, 227, 230, 234, 235, 236.
 </ul>
 </p>
 
index 38a9c5d6d6e35710ef78aba3dedde45cb167db08..a6c8bfb0306fe710f0bb6d70cbba999e4a4eeed6 100644 (file)
@@ -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(); }
 
index 13784fd71cfdc039f7c910b6383d5a7139363413..2a60af8b3ffc10028f16af26cb2ddce23dda4d70 100644 (file)
@@ -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();