]> source.dussan.org Git - javassist.git/commitdiff
added addGetfield() and addPutfield() in javassist.bytecode.Bytecode.
authorchiba <chiba@30ef5769-5b8d-40dd-aea6-55b5d6557bb3>
Fri, 23 Dec 2005 15:58:43 +0000 (15:58 +0000)
committerchiba <chiba@30ef5769-5b8d-40dd-aea6-55b5d6557bb3>
Fri, 23 Dec 2005 15:58:43 +0000 (15:58 +0000)
git-svn-id: http://anonsvn.jboss.org/repos/javassist/trunk@226 30ef5769-5b8d-40dd-aea6-55b5d6557bb3

src/main/javassist/bytecode/Bytecode.java

index 9fe0bb842a199b987a29ca91552383f9334724e3..a1f74c6dac6e1321406ccf30875339815da57034 100644 (file)
@@ -832,8 +832,8 @@ public class Bytecode extends ByteVector implements Cloneable, Opcode {
     /**
      * Appends GETFIELD.
      *
-     * @param c         the class
-     * @param name      the field name
+     * @param c         the class.
+     * @param name      the field name.
      * @param type      the descriptor of the field type.
      *
      * @see Descriptor#of(CtClass)
@@ -845,6 +845,22 @@ public class Bytecode extends ByteVector implements Cloneable, Opcode {
         growStack(Descriptor.dataSize(type) - 1);
     }
 
+    /**
+     * Appends GETFIELD.
+     *
+     * @param c         the fully-qualified class name.
+     * @param name      the field name.
+     * @param type      the descriptor of the field type.
+     *
+     * @see Descriptor#of(CtClass)
+     */
+    public void addGetfield(String c, String name, String type) {
+        add(GETFIELD);
+        int ci = constPool.addClassInfo(c);
+        addIndex(constPool.addFieldrefInfo(ci, name, type));
+        growStack(Descriptor.dataSize(type) - 1);
+    }
+
     /**
      * Appends GETSTATIC.
      *
@@ -1283,8 +1299,27 @@ public class Bytecode extends ByteVector implements Cloneable, Opcode {
      * @param desc      the descriptor of the field type.
      */
     public void addPutfield(CtClass c, String name, String desc) {
+        addPutfield0(c, null, name, desc);
+    }
+
+    /**
+     * Appends PUTFIELD.
+     *
+     * @param classname         the fully-qualified name of the target class.
+     * @param name      the field name.
+     * @param desc      the descriptor of the field type.
+     */
+    public void addPutfield(String classname, String name, String desc) {
+        // if classnaem is null, the target class is THIS.
+        addPutfield0(null, classname, name, desc);
+    }
+
+    private void addPutfield0(CtClass target, String classname,
+                              String name, String desc) {
         add(PUTFIELD);
-        int ci = constPool.addClassInfo(c);
+        // target is null if it represents THIS.
+        int ci = classname == null ? constPool.addClassInfo(target)
+                                   : constPool.addClassInfo(classname);
         addIndex(constPool.addFieldrefInfo(ci, name, desc));
         growStack(-1 - Descriptor.dataSize(desc));
     }
@@ -1315,7 +1350,6 @@ public class Bytecode extends ByteVector implements Cloneable, Opcode {
     private void addPutstatic0(CtClass target, String classname,
                                String fieldName, String desc) {
         add(PUTSTATIC);
-
         // target is null if it represents THIS.
         int ci = classname == null ? constPool.addClassInfo(target)
                                 : constPool.addClassInfo(classname);