]> source.dussan.org Git - javassist.git/commitdiff
Fix JASSIST-71 - Array access replacement generates invalid bytecode when padding...
authorjgreene <jgreene@30ef5769-5b8d-40dd-aea6-55b5d6557bb3>
Tue, 6 Jan 2009 04:35:28 +0000 (04:35 +0000)
committerjgreene <jgreene@30ef5769-5b8d-40dd-aea6-55b5d6557bb3>
Tue, 6 Jan 2009 04:35:28 +0000 (04:35 +0000)
Add checkcast support to framedump

git-svn-id: http://anonsvn.jboss.org/repos/javassist/trunk@464 30ef5769-5b8d-40dd-aea6-55b5d6557bb3

src/main/javassist/bytecode/InstructionPrinter.java
src/main/javassist/convert/TransformAccessArrayField.java

index 03d039082e7a0c09ee956a27f0464e091472e6b5..f0a20e1829e4f197745c0d537095e07e6a01be5f 100644 (file)
@@ -130,6 +130,7 @@ public class InstructionPrinter implements Opcode {
             case NEWARRAY:
                 return opstring + " " + arrayInfo(iter.byteAt(pos + 1));
             case ANEWARRAY:
+            case CHECKCAST:
                 return opstring + " " + classInfo(pool, iter.u16bitAt(pos + 1));
             case WIDE:
                 return wide(iter, pos);
index 7ea4ffe4daa1c91be3a7472da48fc48793180842..959f818493d8100bd8f156c98b534e121075d0fe 100644 (file)
@@ -32,7 +32,7 @@ import javassist.bytecode.analysis.Frame;
  *
  * @author <a href="kabir.khan@jboss.com">Kabir Khan</a>
  * @author Jason T. Greene
- * @version $Revision: 1.6 $
+ * @version $Revision: 1.7 $
  */
 public final class TransformAccessArrayField extends Transformer {
     private final String methodClassname;
@@ -140,6 +140,8 @@ public final class TransformAccessArrayField extends Transformer {
             }
 
             // The gap may include extra padding
+            // Write a nop in case the padding pushes the instruction forward
+            iterator.writeByte(NOP, pos);
             int gapLength = iterator.insertGap(pos, castType != null ? 5 : 2);
 
             int mi = cp.addClassInfo(methodClassname);