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