Merge remote-tracking branch 'BitScorpio/master'
This commit is contained in:
commit
f0761da04a
|
@ -29,4 +29,5 @@
|
|||
* samczsun
|
||||
* ItzSomebody
|
||||
* DreamSworK
|
||||
* BitScorpio
|
||||
* If I missed you, please feel free to contact me @Konloch or konloch@gmail.com
|
10
README.md
10
README.md
|
@ -3,14 +3,8 @@
|
|||
Bytecode Viewer - a lightweight user friendly Java Bytecode Viewer.
|
||||
|
||||
#### New Features
|
||||
* WAR & JSP Loading
|
||||
* JADX-Core Decompiler
|
||||
* Fixed APK & dex loading
|
||||
* Fixed Java 10+ classfiles
|
||||
* Better visual feedback due to the new busy icon system
|
||||
* Synchronized viewing pane option & quick method selection
|
||||
* Updated most libraries to their 2019 version
|
||||
* Tons of bug fixes and general improvements
|
||||
* Updated ASM library to version 9.1
|
||||
* Added support to Java files compiled using JDK > 13
|
||||
|
||||
|
||||
#### Links
|
||||
|
|
BIN
libs/asm-7.1.jar
BIN
libs/asm-7.1.jar
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -190,7 +190,7 @@ public class ClassReader {
|
|||
this.b = classFileBuffer;
|
||||
// Check the class' major_version. This field is after the magic and minor_version fields, which
|
||||
// use 4 and 2 bytes respectively.
|
||||
if (checkClassVersion && readShort(classFileOffset + 6) > Opcodes.V13) {
|
||||
if (checkClassVersion && readShort(classFileOffset + 6) > Opcodes.V17) {
|
||||
throw new IllegalArgumentException(
|
||||
"Unsupported class file major version " + readShort(classFileOffset + 6));
|
||||
}
|
||||
|
@ -1334,113 +1334,113 @@ public class ClassReader {
|
|||
final int bytecodeOffset = currentOffset - bytecodeStartOffset;
|
||||
final int opcode = classBuffer[currentOffset] & 0xFF;
|
||||
switch (opcode) {
|
||||
case Constants.NOP:
|
||||
case Constants.ACONST_NULL:
|
||||
case Constants.ICONST_M1:
|
||||
case Constants.ICONST_0:
|
||||
case Constants.ICONST_1:
|
||||
case Constants.ICONST_2:
|
||||
case Constants.ICONST_3:
|
||||
case Constants.ICONST_4:
|
||||
case Constants.ICONST_5:
|
||||
case Constants.LCONST_0:
|
||||
case Constants.LCONST_1:
|
||||
case Constants.FCONST_0:
|
||||
case Constants.FCONST_1:
|
||||
case Constants.FCONST_2:
|
||||
case Constants.DCONST_0:
|
||||
case Constants.DCONST_1:
|
||||
case Constants.IALOAD:
|
||||
case Constants.LALOAD:
|
||||
case Constants.FALOAD:
|
||||
case Constants.DALOAD:
|
||||
case Constants.AALOAD:
|
||||
case Constants.BALOAD:
|
||||
case Constants.CALOAD:
|
||||
case Constants.SALOAD:
|
||||
case Constants.IASTORE:
|
||||
case Constants.LASTORE:
|
||||
case Constants.FASTORE:
|
||||
case Constants.DASTORE:
|
||||
case Constants.AASTORE:
|
||||
case Constants.BASTORE:
|
||||
case Constants.CASTORE:
|
||||
case Constants.SASTORE:
|
||||
case Constants.POP:
|
||||
case Constants.POP2:
|
||||
case Constants.DUP:
|
||||
case Constants.DUP_X1:
|
||||
case Constants.DUP_X2:
|
||||
case Constants.DUP2:
|
||||
case Constants.DUP2_X1:
|
||||
case Constants.DUP2_X2:
|
||||
case Constants.SWAP:
|
||||
case Constants.IADD:
|
||||
case Constants.LADD:
|
||||
case Constants.FADD:
|
||||
case Constants.DADD:
|
||||
case Constants.ISUB:
|
||||
case Constants.LSUB:
|
||||
case Constants.FSUB:
|
||||
case Constants.DSUB:
|
||||
case Constants.IMUL:
|
||||
case Constants.LMUL:
|
||||
case Constants.FMUL:
|
||||
case Constants.DMUL:
|
||||
case Constants.IDIV:
|
||||
case Constants.LDIV:
|
||||
case Constants.FDIV:
|
||||
case Constants.DDIV:
|
||||
case Constants.IREM:
|
||||
case Constants.LREM:
|
||||
case Constants.FREM:
|
||||
case Constants.DREM:
|
||||
case Constants.INEG:
|
||||
case Constants.LNEG:
|
||||
case Constants.FNEG:
|
||||
case Constants.DNEG:
|
||||
case Constants.ISHL:
|
||||
case Constants.LSHL:
|
||||
case Constants.ISHR:
|
||||
case Constants.LSHR:
|
||||
case Constants.IUSHR:
|
||||
case Constants.LUSHR:
|
||||
case Constants.IAND:
|
||||
case Constants.LAND:
|
||||
case Constants.IOR:
|
||||
case Constants.LOR:
|
||||
case Constants.IXOR:
|
||||
case Constants.LXOR:
|
||||
case Constants.I2L:
|
||||
case Constants.I2F:
|
||||
case Constants.I2D:
|
||||
case Constants.L2I:
|
||||
case Constants.L2F:
|
||||
case Constants.L2D:
|
||||
case Constants.F2I:
|
||||
case Constants.F2L:
|
||||
case Constants.F2D:
|
||||
case Constants.D2I:
|
||||
case Constants.D2L:
|
||||
case Constants.D2F:
|
||||
case Constants.I2B:
|
||||
case Constants.I2C:
|
||||
case Constants.I2S:
|
||||
case Constants.LCMP:
|
||||
case Constants.FCMPL:
|
||||
case Constants.FCMPG:
|
||||
case Constants.DCMPL:
|
||||
case Constants.DCMPG:
|
||||
case Constants.IRETURN:
|
||||
case Constants.LRETURN:
|
||||
case Constants.FRETURN:
|
||||
case Constants.DRETURN:
|
||||
case Constants.ARETURN:
|
||||
case Constants.RETURN:
|
||||
case Constants.ARRAYLENGTH:
|
||||
case Constants.ATHROW:
|
||||
case Constants.MONITORENTER:
|
||||
case Constants.MONITOREXIT:
|
||||
case Opcodes.NOP:
|
||||
case Opcodes.ACONST_NULL:
|
||||
case Opcodes.ICONST_M1:
|
||||
case Opcodes.ICONST_0:
|
||||
case Opcodes.ICONST_1:
|
||||
case Opcodes.ICONST_2:
|
||||
case Opcodes.ICONST_3:
|
||||
case Opcodes.ICONST_4:
|
||||
case Opcodes.ICONST_5:
|
||||
case Opcodes.LCONST_0:
|
||||
case Opcodes.LCONST_1:
|
||||
case Opcodes.FCONST_0:
|
||||
case Opcodes.FCONST_1:
|
||||
case Opcodes.FCONST_2:
|
||||
case Opcodes.DCONST_0:
|
||||
case Opcodes.DCONST_1:
|
||||
case Opcodes.IALOAD:
|
||||
case Opcodes.LALOAD:
|
||||
case Opcodes.FALOAD:
|
||||
case Opcodes.DALOAD:
|
||||
case Opcodes.AALOAD:
|
||||
case Opcodes.BALOAD:
|
||||
case Opcodes.CALOAD:
|
||||
case Opcodes.SALOAD:
|
||||
case Opcodes.IASTORE:
|
||||
case Opcodes.LASTORE:
|
||||
case Opcodes.FASTORE:
|
||||
case Opcodes.DASTORE:
|
||||
case Opcodes.AASTORE:
|
||||
case Opcodes.BASTORE:
|
||||
case Opcodes.CASTORE:
|
||||
case Opcodes.SASTORE:
|
||||
case Opcodes.POP:
|
||||
case Opcodes.POP2:
|
||||
case Opcodes.DUP:
|
||||
case Opcodes.DUP_X1:
|
||||
case Opcodes.DUP_X2:
|
||||
case Opcodes.DUP2:
|
||||
case Opcodes.DUP2_X1:
|
||||
case Opcodes.DUP2_X2:
|
||||
case Opcodes.SWAP:
|
||||
case Opcodes.IADD:
|
||||
case Opcodes.LADD:
|
||||
case Opcodes.FADD:
|
||||
case Opcodes.DADD:
|
||||
case Opcodes.ISUB:
|
||||
case Opcodes.LSUB:
|
||||
case Opcodes.FSUB:
|
||||
case Opcodes.DSUB:
|
||||
case Opcodes.IMUL:
|
||||
case Opcodes.LMUL:
|
||||
case Opcodes.FMUL:
|
||||
case Opcodes.DMUL:
|
||||
case Opcodes.IDIV:
|
||||
case Opcodes.LDIV:
|
||||
case Opcodes.FDIV:
|
||||
case Opcodes.DDIV:
|
||||
case Opcodes.IREM:
|
||||
case Opcodes.LREM:
|
||||
case Opcodes.FREM:
|
||||
case Opcodes.DREM:
|
||||
case Opcodes.INEG:
|
||||
case Opcodes.LNEG:
|
||||
case Opcodes.FNEG:
|
||||
case Opcodes.DNEG:
|
||||
case Opcodes.ISHL:
|
||||
case Opcodes.LSHL:
|
||||
case Opcodes.ISHR:
|
||||
case Opcodes.LSHR:
|
||||
case Opcodes.IUSHR:
|
||||
case Opcodes.LUSHR:
|
||||
case Opcodes.IAND:
|
||||
case Opcodes.LAND:
|
||||
case Opcodes.IOR:
|
||||
case Opcodes.LOR:
|
||||
case Opcodes.IXOR:
|
||||
case Opcodes.LXOR:
|
||||
case Opcodes.I2L:
|
||||
case Opcodes.I2F:
|
||||
case Opcodes.I2D:
|
||||
case Opcodes.L2I:
|
||||
case Opcodes.L2F:
|
||||
case Opcodes.L2D:
|
||||
case Opcodes.F2I:
|
||||
case Opcodes.F2L:
|
||||
case Opcodes.F2D:
|
||||
case Opcodes.D2I:
|
||||
case Opcodes.D2L:
|
||||
case Opcodes.D2F:
|
||||
case Opcodes.I2B:
|
||||
case Opcodes.I2C:
|
||||
case Opcodes.I2S:
|
||||
case Opcodes.LCMP:
|
||||
case Opcodes.FCMPL:
|
||||
case Opcodes.FCMPG:
|
||||
case Opcodes.DCMPL:
|
||||
case Opcodes.DCMPG:
|
||||
case Opcodes.IRETURN:
|
||||
case Opcodes.LRETURN:
|
||||
case Opcodes.FRETURN:
|
||||
case Opcodes.DRETURN:
|
||||
case Opcodes.ARETURN:
|
||||
case Opcodes.RETURN:
|
||||
case Opcodes.ARRAYLENGTH:
|
||||
case Opcodes.ATHROW:
|
||||
case Opcodes.MONITORENTER:
|
||||
case Opcodes.MONITOREXIT:
|
||||
case Constants.ILOAD_0:
|
||||
case Constants.ILOAD_1:
|
||||
case Constants.ILOAD_2:
|
||||
|
@ -1483,24 +1483,24 @@ public class ClassReader {
|
|||
case Constants.ASTORE_3:
|
||||
currentOffset += 1;
|
||||
break;
|
||||
case Constants.IFEQ:
|
||||
case Constants.IFNE:
|
||||
case Constants.IFLT:
|
||||
case Constants.IFGE:
|
||||
case Constants.IFGT:
|
||||
case Constants.IFLE:
|
||||
case Constants.IF_ICMPEQ:
|
||||
case Constants.IF_ICMPNE:
|
||||
case Constants.IF_ICMPLT:
|
||||
case Constants.IF_ICMPGE:
|
||||
case Constants.IF_ICMPGT:
|
||||
case Constants.IF_ICMPLE:
|
||||
case Constants.IF_ACMPEQ:
|
||||
case Constants.IF_ACMPNE:
|
||||
case Constants.GOTO:
|
||||
case Constants.JSR:
|
||||
case Constants.IFNULL:
|
||||
case Constants.IFNONNULL:
|
||||
case Opcodes.IFEQ:
|
||||
case Opcodes.IFNE:
|
||||
case Opcodes.IFLT:
|
||||
case Opcodes.IFGE:
|
||||
case Opcodes.IFGT:
|
||||
case Opcodes.IFLE:
|
||||
case Opcodes.IF_ICMPEQ:
|
||||
case Opcodes.IF_ICMPNE:
|
||||
case Opcodes.IF_ICMPLT:
|
||||
case Opcodes.IF_ICMPGE:
|
||||
case Opcodes.IF_ICMPGT:
|
||||
case Opcodes.IF_ICMPLE:
|
||||
case Opcodes.IF_ACMPEQ:
|
||||
case Opcodes.IF_ACMPNE:
|
||||
case Opcodes.GOTO:
|
||||
case Opcodes.JSR:
|
||||
case Opcodes.IFNULL:
|
||||
case Opcodes.IFNONNULL:
|
||||
createLabel(bytecodeOffset + readShort(currentOffset + 1), labels);
|
||||
currentOffset += 3;
|
||||
break;
|
||||
|
@ -1533,27 +1533,27 @@ public class ClassReader {
|
|||
break;
|
||||
case Constants.WIDE:
|
||||
switch (classBuffer[currentOffset + 1] & 0xFF) {
|
||||
case Constants.ILOAD:
|
||||
case Constants.FLOAD:
|
||||
case Constants.ALOAD:
|
||||
case Constants.LLOAD:
|
||||
case Constants.DLOAD:
|
||||
case Constants.ISTORE:
|
||||
case Constants.FSTORE:
|
||||
case Constants.ASTORE:
|
||||
case Constants.LSTORE:
|
||||
case Constants.DSTORE:
|
||||
case Constants.RET:
|
||||
case Opcodes.ILOAD:
|
||||
case Opcodes.FLOAD:
|
||||
case Opcodes.ALOAD:
|
||||
case Opcodes.LLOAD:
|
||||
case Opcodes.DLOAD:
|
||||
case Opcodes.ISTORE:
|
||||
case Opcodes.FSTORE:
|
||||
case Opcodes.ASTORE:
|
||||
case Opcodes.LSTORE:
|
||||
case Opcodes.DSTORE:
|
||||
case Opcodes.RET:
|
||||
currentOffset += 4;
|
||||
break;
|
||||
case Constants.IINC:
|
||||
case Opcodes.IINC:
|
||||
currentOffset += 6;
|
||||
break;
|
||||
default:
|
||||
throw new IllegalArgumentException();
|
||||
}
|
||||
break;
|
||||
case Constants.TABLESWITCH:
|
||||
case Opcodes.TABLESWITCH:
|
||||
// Skip 0 to 3 padding bytes.
|
||||
currentOffset += 4 - (bytecodeOffset & 3);
|
||||
// Read the default label and the number of table entries.
|
||||
|
@ -1566,7 +1566,7 @@ public class ClassReader {
|
|||
currentOffset += 4;
|
||||
}
|
||||
break;
|
||||
case Constants.LOOKUPSWITCH:
|
||||
case Opcodes.LOOKUPSWITCH:
|
||||
// Skip 0 to 3 padding bytes.
|
||||
currentOffset += 4 - (bytecodeOffset & 3);
|
||||
// Read the default label and the number of switch cases.
|
||||
|
@ -1579,44 +1579,44 @@ public class ClassReader {
|
|||
currentOffset += 8;
|
||||
}
|
||||
break;
|
||||
case Constants.ILOAD:
|
||||
case Constants.LLOAD:
|
||||
case Constants.FLOAD:
|
||||
case Constants.DLOAD:
|
||||
case Constants.ALOAD:
|
||||
case Constants.ISTORE:
|
||||
case Constants.LSTORE:
|
||||
case Constants.FSTORE:
|
||||
case Constants.DSTORE:
|
||||
case Constants.ASTORE:
|
||||
case Constants.RET:
|
||||
case Constants.BIPUSH:
|
||||
case Constants.NEWARRAY:
|
||||
case Constants.LDC:
|
||||
case Opcodes.ILOAD:
|
||||
case Opcodes.LLOAD:
|
||||
case Opcodes.FLOAD:
|
||||
case Opcodes.DLOAD:
|
||||
case Opcodes.ALOAD:
|
||||
case Opcodes.ISTORE:
|
||||
case Opcodes.LSTORE:
|
||||
case Opcodes.FSTORE:
|
||||
case Opcodes.DSTORE:
|
||||
case Opcodes.ASTORE:
|
||||
case Opcodes.RET:
|
||||
case Opcodes.BIPUSH:
|
||||
case Opcodes.NEWARRAY:
|
||||
case Opcodes.LDC:
|
||||
currentOffset += 2;
|
||||
break;
|
||||
case Constants.SIPUSH:
|
||||
case Opcodes.SIPUSH:
|
||||
case Constants.LDC_W:
|
||||
case Constants.LDC2_W:
|
||||
case Constants.GETSTATIC:
|
||||
case Constants.PUTSTATIC:
|
||||
case Constants.GETFIELD:
|
||||
case Constants.PUTFIELD:
|
||||
case Constants.INVOKEVIRTUAL:
|
||||
case Constants.INVOKESPECIAL:
|
||||
case Constants.INVOKESTATIC:
|
||||
case Constants.NEW:
|
||||
case Constants.ANEWARRAY:
|
||||
case Constants.CHECKCAST:
|
||||
case Constants.INSTANCEOF:
|
||||
case Constants.IINC:
|
||||
case Opcodes.GETSTATIC:
|
||||
case Opcodes.PUTSTATIC:
|
||||
case Opcodes.GETFIELD:
|
||||
case Opcodes.PUTFIELD:
|
||||
case Opcodes.INVOKEVIRTUAL:
|
||||
case Opcodes.INVOKESPECIAL:
|
||||
case Opcodes.INVOKESTATIC:
|
||||
case Opcodes.NEW:
|
||||
case Opcodes.ANEWARRAY:
|
||||
case Opcodes.CHECKCAST:
|
||||
case Opcodes.INSTANCEOF:
|
||||
case Opcodes.IINC:
|
||||
currentOffset += 3;
|
||||
break;
|
||||
case Constants.INVOKEINTERFACE:
|
||||
case Constants.INVOKEDYNAMIC:
|
||||
case Opcodes.INVOKEINTERFACE:
|
||||
case Opcodes.INVOKEDYNAMIC:
|
||||
currentOffset += 5;
|
||||
break;
|
||||
case Constants.MULTIANEWARRAY:
|
||||
case Opcodes.MULTIANEWARRAY:
|
||||
currentOffset += 4;
|
||||
break;
|
||||
default:
|
||||
|
@ -1883,113 +1883,113 @@ public class ClassReader {
|
|||
// Visit the instruction at this bytecode offset.
|
||||
int opcode = classBuffer[currentOffset] & 0xFF;
|
||||
switch (opcode) {
|
||||
case Constants.NOP:
|
||||
case Constants.ACONST_NULL:
|
||||
case Constants.ICONST_M1:
|
||||
case Constants.ICONST_0:
|
||||
case Constants.ICONST_1:
|
||||
case Constants.ICONST_2:
|
||||
case Constants.ICONST_3:
|
||||
case Constants.ICONST_4:
|
||||
case Constants.ICONST_5:
|
||||
case Constants.LCONST_0:
|
||||
case Constants.LCONST_1:
|
||||
case Constants.FCONST_0:
|
||||
case Constants.FCONST_1:
|
||||
case Constants.FCONST_2:
|
||||
case Constants.DCONST_0:
|
||||
case Constants.DCONST_1:
|
||||
case Constants.IALOAD:
|
||||
case Constants.LALOAD:
|
||||
case Constants.FALOAD:
|
||||
case Constants.DALOAD:
|
||||
case Constants.AALOAD:
|
||||
case Constants.BALOAD:
|
||||
case Constants.CALOAD:
|
||||
case Constants.SALOAD:
|
||||
case Constants.IASTORE:
|
||||
case Constants.LASTORE:
|
||||
case Constants.FASTORE:
|
||||
case Constants.DASTORE:
|
||||
case Constants.AASTORE:
|
||||
case Constants.BASTORE:
|
||||
case Constants.CASTORE:
|
||||
case Constants.SASTORE:
|
||||
case Constants.POP:
|
||||
case Constants.POP2:
|
||||
case Constants.DUP:
|
||||
case Constants.DUP_X1:
|
||||
case Constants.DUP_X2:
|
||||
case Constants.DUP2:
|
||||
case Constants.DUP2_X1:
|
||||
case Constants.DUP2_X2:
|
||||
case Constants.SWAP:
|
||||
case Constants.IADD:
|
||||
case Constants.LADD:
|
||||
case Constants.FADD:
|
||||
case Constants.DADD:
|
||||
case Constants.ISUB:
|
||||
case Constants.LSUB:
|
||||
case Constants.FSUB:
|
||||
case Constants.DSUB:
|
||||
case Constants.IMUL:
|
||||
case Constants.LMUL:
|
||||
case Constants.FMUL:
|
||||
case Constants.DMUL:
|
||||
case Constants.IDIV:
|
||||
case Constants.LDIV:
|
||||
case Constants.FDIV:
|
||||
case Constants.DDIV:
|
||||
case Constants.IREM:
|
||||
case Constants.LREM:
|
||||
case Constants.FREM:
|
||||
case Constants.DREM:
|
||||
case Constants.INEG:
|
||||
case Constants.LNEG:
|
||||
case Constants.FNEG:
|
||||
case Constants.DNEG:
|
||||
case Constants.ISHL:
|
||||
case Constants.LSHL:
|
||||
case Constants.ISHR:
|
||||
case Constants.LSHR:
|
||||
case Constants.IUSHR:
|
||||
case Constants.LUSHR:
|
||||
case Constants.IAND:
|
||||
case Constants.LAND:
|
||||
case Constants.IOR:
|
||||
case Constants.LOR:
|
||||
case Constants.IXOR:
|
||||
case Constants.LXOR:
|
||||
case Constants.I2L:
|
||||
case Constants.I2F:
|
||||
case Constants.I2D:
|
||||
case Constants.L2I:
|
||||
case Constants.L2F:
|
||||
case Constants.L2D:
|
||||
case Constants.F2I:
|
||||
case Constants.F2L:
|
||||
case Constants.F2D:
|
||||
case Constants.D2I:
|
||||
case Constants.D2L:
|
||||
case Constants.D2F:
|
||||
case Constants.I2B:
|
||||
case Constants.I2C:
|
||||
case Constants.I2S:
|
||||
case Constants.LCMP:
|
||||
case Constants.FCMPL:
|
||||
case Constants.FCMPG:
|
||||
case Constants.DCMPL:
|
||||
case Constants.DCMPG:
|
||||
case Constants.IRETURN:
|
||||
case Constants.LRETURN:
|
||||
case Constants.FRETURN:
|
||||
case Constants.DRETURN:
|
||||
case Constants.ARETURN:
|
||||
case Constants.RETURN:
|
||||
case Constants.ARRAYLENGTH:
|
||||
case Constants.ATHROW:
|
||||
case Constants.MONITORENTER:
|
||||
case Constants.MONITOREXIT:
|
||||
case Opcodes.NOP:
|
||||
case Opcodes.ACONST_NULL:
|
||||
case Opcodes.ICONST_M1:
|
||||
case Opcodes.ICONST_0:
|
||||
case Opcodes.ICONST_1:
|
||||
case Opcodes.ICONST_2:
|
||||
case Opcodes.ICONST_3:
|
||||
case Opcodes.ICONST_4:
|
||||
case Opcodes.ICONST_5:
|
||||
case Opcodes.LCONST_0:
|
||||
case Opcodes.LCONST_1:
|
||||
case Opcodes.FCONST_0:
|
||||
case Opcodes.FCONST_1:
|
||||
case Opcodes.FCONST_2:
|
||||
case Opcodes.DCONST_0:
|
||||
case Opcodes.DCONST_1:
|
||||
case Opcodes.IALOAD:
|
||||
case Opcodes.LALOAD:
|
||||
case Opcodes.FALOAD:
|
||||
case Opcodes.DALOAD:
|
||||
case Opcodes.AALOAD:
|
||||
case Opcodes.BALOAD:
|
||||
case Opcodes.CALOAD:
|
||||
case Opcodes.SALOAD:
|
||||
case Opcodes.IASTORE:
|
||||
case Opcodes.LASTORE:
|
||||
case Opcodes.FASTORE:
|
||||
case Opcodes.DASTORE:
|
||||
case Opcodes.AASTORE:
|
||||
case Opcodes.BASTORE:
|
||||
case Opcodes.CASTORE:
|
||||
case Opcodes.SASTORE:
|
||||
case Opcodes.POP:
|
||||
case Opcodes.POP2:
|
||||
case Opcodes.DUP:
|
||||
case Opcodes.DUP_X1:
|
||||
case Opcodes.DUP_X2:
|
||||
case Opcodes.DUP2:
|
||||
case Opcodes.DUP2_X1:
|
||||
case Opcodes.DUP2_X2:
|
||||
case Opcodes.SWAP:
|
||||
case Opcodes.IADD:
|
||||
case Opcodes.LADD:
|
||||
case Opcodes.FADD:
|
||||
case Opcodes.DADD:
|
||||
case Opcodes.ISUB:
|
||||
case Opcodes.LSUB:
|
||||
case Opcodes.FSUB:
|
||||
case Opcodes.DSUB:
|
||||
case Opcodes.IMUL:
|
||||
case Opcodes.LMUL:
|
||||
case Opcodes.FMUL:
|
||||
case Opcodes.DMUL:
|
||||
case Opcodes.IDIV:
|
||||
case Opcodes.LDIV:
|
||||
case Opcodes.FDIV:
|
||||
case Opcodes.DDIV:
|
||||
case Opcodes.IREM:
|
||||
case Opcodes.LREM:
|
||||
case Opcodes.FREM:
|
||||
case Opcodes.DREM:
|
||||
case Opcodes.INEG:
|
||||
case Opcodes.LNEG:
|
||||
case Opcodes.FNEG:
|
||||
case Opcodes.DNEG:
|
||||
case Opcodes.ISHL:
|
||||
case Opcodes.LSHL:
|
||||
case Opcodes.ISHR:
|
||||
case Opcodes.LSHR:
|
||||
case Opcodes.IUSHR:
|
||||
case Opcodes.LUSHR:
|
||||
case Opcodes.IAND:
|
||||
case Opcodes.LAND:
|
||||
case Opcodes.IOR:
|
||||
case Opcodes.LOR:
|
||||
case Opcodes.IXOR:
|
||||
case Opcodes.LXOR:
|
||||
case Opcodes.I2L:
|
||||
case Opcodes.I2F:
|
||||
case Opcodes.I2D:
|
||||
case Opcodes.L2I:
|
||||
case Opcodes.L2F:
|
||||
case Opcodes.L2D:
|
||||
case Opcodes.F2I:
|
||||
case Opcodes.F2L:
|
||||
case Opcodes.F2D:
|
||||
case Opcodes.D2I:
|
||||
case Opcodes.D2L:
|
||||
case Opcodes.D2F:
|
||||
case Opcodes.I2B:
|
||||
case Opcodes.I2C:
|
||||
case Opcodes.I2S:
|
||||
case Opcodes.LCMP:
|
||||
case Opcodes.FCMPL:
|
||||
case Opcodes.FCMPG:
|
||||
case Opcodes.DCMPL:
|
||||
case Opcodes.DCMPG:
|
||||
case Opcodes.IRETURN:
|
||||
case Opcodes.LRETURN:
|
||||
case Opcodes.FRETURN:
|
||||
case Opcodes.DRETURN:
|
||||
case Opcodes.ARETURN:
|
||||
case Opcodes.RETURN:
|
||||
case Opcodes.ARRAYLENGTH:
|
||||
case Opcodes.ATHROW:
|
||||
case Opcodes.MONITORENTER:
|
||||
case Opcodes.MONITOREXIT:
|
||||
methodVisitor.visitInsn(opcode);
|
||||
currentOffset += 1;
|
||||
break;
|
||||
|
@ -2041,24 +2041,24 @@ public class ClassReader {
|
|||
methodVisitor.visitVarInsn(Opcodes.ISTORE + (opcode >> 2), opcode & 0x3);
|
||||
currentOffset += 1;
|
||||
break;
|
||||
case Constants.IFEQ:
|
||||
case Constants.IFNE:
|
||||
case Constants.IFLT:
|
||||
case Constants.IFGE:
|
||||
case Constants.IFGT:
|
||||
case Constants.IFLE:
|
||||
case Constants.IF_ICMPEQ:
|
||||
case Constants.IF_ICMPNE:
|
||||
case Constants.IF_ICMPLT:
|
||||
case Constants.IF_ICMPGE:
|
||||
case Constants.IF_ICMPGT:
|
||||
case Constants.IF_ICMPLE:
|
||||
case Constants.IF_ACMPEQ:
|
||||
case Constants.IF_ACMPNE:
|
||||
case Constants.GOTO:
|
||||
case Constants.JSR:
|
||||
case Constants.IFNULL:
|
||||
case Constants.IFNONNULL:
|
||||
case Opcodes.IFEQ:
|
||||
case Opcodes.IFNE:
|
||||
case Opcodes.IFLT:
|
||||
case Opcodes.IFGE:
|
||||
case Opcodes.IFGT:
|
||||
case Opcodes.IFLE:
|
||||
case Opcodes.IF_ICMPEQ:
|
||||
case Opcodes.IF_ICMPNE:
|
||||
case Opcodes.IF_ICMPLT:
|
||||
case Opcodes.IF_ICMPGE:
|
||||
case Opcodes.IF_ICMPGT:
|
||||
case Opcodes.IF_ICMPLE:
|
||||
case Opcodes.IF_ACMPEQ:
|
||||
case Opcodes.IF_ACMPNE:
|
||||
case Opcodes.GOTO:
|
||||
case Opcodes.JSR:
|
||||
case Opcodes.IFNULL:
|
||||
case Opcodes.IFNONNULL:
|
||||
methodVisitor.visitJumpInsn(
|
||||
opcode, labels[currentBytecodeOffset + readShort(currentOffset + 1)]);
|
||||
currentOffset += 3;
|
||||
|
@ -2139,7 +2139,7 @@ public class ClassReader {
|
|||
currentOffset += 4;
|
||||
}
|
||||
break;
|
||||
case Constants.TABLESWITCH:
|
||||
case Opcodes.TABLESWITCH:
|
||||
{
|
||||
// Skip 0 to 3 padding bytes.
|
||||
currentOffset += 4 - (currentBytecodeOffset & 3);
|
||||
|
@ -2156,7 +2156,7 @@ public class ClassReader {
|
|||
methodVisitor.visitTableSwitchInsn(low, high, defaultLabel, table);
|
||||
break;
|
||||
}
|
||||
case Constants.LOOKUPSWITCH:
|
||||
case Opcodes.LOOKUPSWITCH:
|
||||
{
|
||||
// Skip 0 to 3 padding bytes.
|
||||
currentOffset += 4 - (currentBytecodeOffset & 3);
|
||||
|
@ -2174,30 +2174,30 @@ public class ClassReader {
|
|||
methodVisitor.visitLookupSwitchInsn(defaultLabel, keys, values);
|
||||
break;
|
||||
}
|
||||
case Constants.ILOAD:
|
||||
case Constants.LLOAD:
|
||||
case Constants.FLOAD:
|
||||
case Constants.DLOAD:
|
||||
case Constants.ALOAD:
|
||||
case Constants.ISTORE:
|
||||
case Constants.LSTORE:
|
||||
case Constants.FSTORE:
|
||||
case Constants.DSTORE:
|
||||
case Constants.ASTORE:
|
||||
case Constants.RET:
|
||||
case Opcodes.ILOAD:
|
||||
case Opcodes.LLOAD:
|
||||
case Opcodes.FLOAD:
|
||||
case Opcodes.DLOAD:
|
||||
case Opcodes.ALOAD:
|
||||
case Opcodes.ISTORE:
|
||||
case Opcodes.LSTORE:
|
||||
case Opcodes.FSTORE:
|
||||
case Opcodes.DSTORE:
|
||||
case Opcodes.ASTORE:
|
||||
case Opcodes.RET:
|
||||
methodVisitor.visitVarInsn(opcode, classBuffer[currentOffset + 1] & 0xFF);
|
||||
currentOffset += 2;
|
||||
break;
|
||||
case Constants.BIPUSH:
|
||||
case Constants.NEWARRAY:
|
||||
case Opcodes.BIPUSH:
|
||||
case Opcodes.NEWARRAY:
|
||||
methodVisitor.visitIntInsn(opcode, classBuffer[currentOffset + 1]);
|
||||
currentOffset += 2;
|
||||
break;
|
||||
case Constants.SIPUSH:
|
||||
case Opcodes.SIPUSH:
|
||||
methodVisitor.visitIntInsn(opcode, readShort(currentOffset + 1));
|
||||
currentOffset += 3;
|
||||
break;
|
||||
case Constants.LDC:
|
||||
case Opcodes.LDC:
|
||||
methodVisitor.visitLdcInsn(readConst(classBuffer[currentOffset + 1] & 0xFF, charBuffer));
|
||||
currentOffset += 2;
|
||||
break;
|
||||
|
@ -2206,14 +2206,14 @@ public class ClassReader {
|
|||
methodVisitor.visitLdcInsn(readConst(readUnsignedShort(currentOffset + 1), charBuffer));
|
||||
currentOffset += 3;
|
||||
break;
|
||||
case Constants.GETSTATIC:
|
||||
case Constants.PUTSTATIC:
|
||||
case Constants.GETFIELD:
|
||||
case Constants.PUTFIELD:
|
||||
case Constants.INVOKEVIRTUAL:
|
||||
case Constants.INVOKESPECIAL:
|
||||
case Constants.INVOKESTATIC:
|
||||
case Constants.INVOKEINTERFACE:
|
||||
case Opcodes.GETSTATIC:
|
||||
case Opcodes.PUTSTATIC:
|
||||
case Opcodes.GETFIELD:
|
||||
case Opcodes.PUTFIELD:
|
||||
case Opcodes.INVOKEVIRTUAL:
|
||||
case Opcodes.INVOKESPECIAL:
|
||||
case Opcodes.INVOKESTATIC:
|
||||
case Opcodes.INVOKEINTERFACE:
|
||||
{
|
||||
int cpInfoOffset = cpInfoOffsets[readUnsignedShort(currentOffset + 1)];
|
||||
int nameAndTypeCpInfoOffset = cpInfoOffsets[readUnsignedShort(cpInfoOffset + 2)];
|
||||
|
@ -2234,7 +2234,7 @@ public class ClassReader {
|
|||
}
|
||||
break;
|
||||
}
|
||||
case Constants.INVOKEDYNAMIC:
|
||||
case Opcodes.INVOKEDYNAMIC:
|
||||
{
|
||||
int cpInfoOffset = cpInfoOffsets[readUnsignedShort(currentOffset + 1)];
|
||||
int nameAndTypeCpInfoOffset = cpInfoOffsets[readUnsignedShort(cpInfoOffset + 2)];
|
||||
|
@ -2256,19 +2256,19 @@ public class ClassReader {
|
|||
currentOffset += 5;
|
||||
break;
|
||||
}
|
||||
case Constants.NEW:
|
||||
case Constants.ANEWARRAY:
|
||||
case Constants.CHECKCAST:
|
||||
case Constants.INSTANCEOF:
|
||||
case Opcodes.NEW:
|
||||
case Opcodes.ANEWARRAY:
|
||||
case Opcodes.CHECKCAST:
|
||||
case Opcodes.INSTANCEOF:
|
||||
methodVisitor.visitTypeInsn(opcode, readClass(currentOffset + 1, charBuffer));
|
||||
currentOffset += 3;
|
||||
break;
|
||||
case Constants.IINC:
|
||||
case Opcodes.IINC:
|
||||
methodVisitor.visitIincInsn(
|
||||
classBuffer[currentOffset + 1] & 0xFF, classBuffer[currentOffset + 2]);
|
||||
currentOffset += 3;
|
||||
break;
|
||||
case Constants.MULTIANEWARRAY:
|
||||
case Opcodes.MULTIANEWARRAY:
|
||||
methodVisitor.visitMultiANewArrayInsn(
|
||||
readClass(currentOffset + 1, charBuffer), classBuffer[currentOffset + 3] & 0xFF);
|
||||
currentOffset += 4;
|
||||
|
|
|
@ -114,7 +114,7 @@ import the.bytecode.club.bytecodeviewer.util.*;
|
|||
public class BytecodeViewer
|
||||
{
|
||||
/*per version*/
|
||||
public static final String VERSION = "2.9.22";
|
||||
public static final String VERSION = "2.9.23";
|
||||
public static String krakatauVersion = "12";
|
||||
public static String enjarifyVersion = "4";
|
||||
public static final boolean BLOCK_TAB_MENU = true;
|
||||
|
|
Loading…
Reference in New Issue