src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.bytecode/src/org/graalvm/compiler/bytecode/BytecodeDisassembler.java
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File hotspot Sdiff src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.bytecode/src/org/graalvm/compiler/bytecode

src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.bytecode/src/org/graalvm/compiler/bytecode/BytecodeDisassembler.java

Print this page




 148         ConstantPool cp = code.getConstantPool();
 149         BytecodeStream stream = new BytecodeStream(code.getCode());
 150         StringBuilder buf = new StringBuilder();
 151         int opcode = stream.currentBC();
 152         try {
 153             while (opcode != Bytecodes.END) {
 154                 int bci = stream.currentBCI();
 155                 if (bci >= startBci && bci <= endBci) {
 156                     String mnemonic = Bytecodes.nameOf(opcode);
 157                     buf.append(String.format("%4d: %-14s", bci, mnemonic));
 158                     if (stream.nextBCI() > bci + 1) {
 159                         decodeOperand(buf, stream, cp, method, bci, opcode);
 160                     }
 161                     if (newLine) {
 162                         buf.append(String.format("%n"));
 163                     }
 164                 }
 165                 stream.next();
 166                 opcode = stream.currentBC();
 167             }
 168         } catch (RuntimeException e) {
 169             throw new RuntimeException(String.format("Error disassembling %s%nPartial disassembly:%n%s", method.format("%H.%n(%p)"), buf.toString()), e);
 170         }
 171         return buf.toString();
 172     }
 173 
 174     private void decodeOperand(StringBuilder buf, BytecodeStream stream, ConstantPool cp, ResolvedJavaMethod method, int bci, int opcode) {
 175         // @formatter:off
 176         switch (opcode) {
 177             case BIPUSH         : buf.append(stream.readByte()); break;
 178             case SIPUSH         : buf.append(stream.readShort()); break;
 179             case NEW            :
 180             case CHECKCAST      :
 181             case INSTANCEOF     :
 182             case ANEWARRAY      : {
 183                 int cpi = stream.readCPI();
 184                 JavaType type = cp.lookupType(cpi, opcode);
 185                 buf.append(String.format("#%-10d // %s", cpi, type.toJavaName()));
 186                 break;
 187             }
 188             case GETSTATIC      :




 148         ConstantPool cp = code.getConstantPool();
 149         BytecodeStream stream = new BytecodeStream(code.getCode());
 150         StringBuilder buf = new StringBuilder();
 151         int opcode = stream.currentBC();
 152         try {
 153             while (opcode != Bytecodes.END) {
 154                 int bci = stream.currentBCI();
 155                 if (bci >= startBci && bci <= endBci) {
 156                     String mnemonic = Bytecodes.nameOf(opcode);
 157                     buf.append(String.format("%4d: %-14s", bci, mnemonic));
 158                     if (stream.nextBCI() > bci + 1) {
 159                         decodeOperand(buf, stream, cp, method, bci, opcode);
 160                     }
 161                     if (newLine) {
 162                         buf.append(String.format("%n"));
 163                     }
 164                 }
 165                 stream.next();
 166                 opcode = stream.currentBC();
 167             }
 168         } catch (Throwable e) {
 169             throw new RuntimeException(String.format("Error disassembling %s%nPartial disassembly:%n%s", method.format("%H.%n(%p)"), buf.toString()), e);
 170         }
 171         return buf.toString();
 172     }
 173 
 174     private void decodeOperand(StringBuilder buf, BytecodeStream stream, ConstantPool cp, ResolvedJavaMethod method, int bci, int opcode) {
 175         // @formatter:off
 176         switch (opcode) {
 177             case BIPUSH         : buf.append(stream.readByte()); break;
 178             case SIPUSH         : buf.append(stream.readShort()); break;
 179             case NEW            :
 180             case CHECKCAST      :
 181             case INSTANCEOF     :
 182             case ANEWARRAY      : {
 183                 int cpi = stream.readCPI();
 184                 JavaType type = cp.lookupType(cpi, opcode);
 185                 buf.append(String.format("#%-10d // %s", cpi, type.toJavaName()));
 186                 break;
 187             }
 188             case GETSTATIC      :


src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.bytecode/src/org/graalvm/compiler/bytecode/BytecodeDisassembler.java
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File