Class ByteCodeVerifier
java.lang.Object
org.vesalainen.bcc.OpCodeUtil
org.vesalainen.bcc.ByteCodeVerifier
- All Implemented Interfaces:
OpCode
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprivate classprivate class -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate Deque<ByteCodeVerifier.Context> private ClassFileprivate byte[]private boolean[]private ExceptionTable[]private CodeDataInputprivate Map<Integer, TypeMirror[]> private TypeMirror[]private intprivate intprivate MethodCompilerprivate intprivate static final TypeMirrorprivate Map<Integer, Deque<TypeMirror>> Fields inherited from interface OpCode
AALOAD, AASTORE, ACONST_NULL, ALOAD, ALOAD_0, ALOAD_1, ALOAD_2, ALOAD_3, ANEWARRAY, ARETURN, ARRAYLENGTH, ASTORE, ASTORE_0, ASTORE_1, ASTORE_2, ASTORE_3, ATHROW, BALOAD, BASTORE, BIPUSH, BREAKPOINT, CALOAD, CASTORE, CHECKCAST, D2F, D2I, D2L, DADD, DALOAD, DASTORE, DCMPG, DCMPL, DCONST_0, DCONST_1, DDIV, DLOAD, DLOAD_0, DLOAD_1, DLOAD_2, DLOAD_3, DMUL, DNEG, DRETURN, DSTORE, DSTORE_0, DSTORE_1, DSTORE_2, DSTORE_3, DSUB, DUP, DUP_X1, DUP_X2, DUP2, DUP2_X1, DUP2_X2, F2D, F2I, F2L, FADD, FALOAD, FASTORE, FCMPG, FCMPL, FCONST_0, FCONST_1, FCONST_2, FDIV, FLOAD, FLOAD_0, FLOAD_1, FLOAD_2, FLOAD_3, FMUL, FNEG, FREM, FRETURN, FSTORE, FSTORE_0, FSTORE_1, FSTORE_2, FSTORE_3, FSUB, GETFIELD, GETSTATIC, GOTO, GOTO_W, I2B, I2C, I2D, I2F, I2L, I2S, IADD, IALOAD, IAND, IASTORE, ICONST_0, ICONST_1, ICONST_2, ICONST_3, ICONST_4, ICONST_5, ICONST_M1, IDIV, IF_ACMPEQ, IF_ACMPNE, IF_ICMPEQ, IF_ICMPGE, IF_ICMPGT, IF_ICMPLE, IF_ICMPLT, IF_ICMPNE, IFEQ, IFGE, IFGT, IFLE, IFLT, IFNE, IFNONNULL, IFNULL, IINC, ILOAD, ILOAD_0, ILOAD_1, ILOAD_2, ILOAD_3, IMPDEP1, IMPDEP2, IMUL, INEG, INSTANCEOF, INVOKEINTERFACE, INVOKESPECIAL, INVOKESTATIC, INVOKEVIRTUAL, IOR, IREM, IRETURN, ISHL, ISHR, ISTORE, ISTORE_0, ISTORE_1, ISTORE_2, ISTORE_3, ISUB, IUSHR, IXOR, JSR, JSR_W, L2D, L2F, L2I, LADD, LALOAD, LAND, LASTORE, LCMP, LCONST_0, LCONST_1, LDC, LDC_W, LDC2_W, LDIV, LLOAD, LLOAD_0, LLOAD_1, LLOAD_2, LLOAD_3, LMUL, LNEG, LOOKUPSWITCH, LOR, LREM, LRETURN, LSHL, LSHR, LSTORE, LSTORE_0, LSTORE_1, LSTORE_2, LSTORE_3, LSUB, LUSHR, LXOR, MONITORENTER, MONITOREXIT, MULTIANEWARRAY, NEW, NEWARRAY, NOP, NOT_IF_ACMPEQ, NOT_IF_ACMPNE, NOT_IF_ICMPEQ, NOT_IF_ICMPGE, NOT_IF_ICMPGT, NOT_IF_ICMPLE, NOT_IF_ICMPLT, NOT_IF_ICMPNE, NOT_IFEQ, NOT_IFGE, NOT_IFGT, NOT_IFLE, NOT_IFLT, NOT_IFNE, NOT_IFNONNULL, NOT_IFNULL, POP, POP2, PUTFIELD, PUTSTATIC, RET, RETURN, SALOAD, SASTORE, SIPUSH, SWAP, TABLESWITCH, WIDE -
Constructor Summary
ConstructorsConstructorDescriptionByteCodeVerifier(byte[] code, ExceptionTable[] exceptionTable, ClassFile classFile, MethodCompiler mc) -
Method Summary
Modifier and TypeMethodDescriptionprivate voidbranch(int pc, int offset, ByteCodeVerifier.OperandStack s, TypeMirror[] lv) private booleanc1(TypeMirror cls) private booleanc2(TypeMirror cls) private booleancompare(TypeMirror[] lvBefore, TypeMirror[] lvNow) private ExecutableElementgetIndexedExecutable(int i) private TypeMirrorgetIndexedType(int i) private VariableElementgetIndexedVariable(int i) private TypeMirrorgetLocalType(int index) intprivate intvoidverify()private voidverify(TypeMirror assignee, TypeMirror assignable) private voidverify1(TypeMirror cls) private voidverify2(TypeMirror cls) private voidprivate voidprivate voidverifyClass(TypeMirror objectRef, ExecutableElement method) private voidverifyInterfaceClass(TypeMirror objectRef, ExecutableElement method) private voidverifyLocalType(int index, TypeMirror cls) static voidverifyMethod(Deque<TypeMirror> stack, ExecutableElement method) private voidprivate voidverifyVirtualClass(TypeMirror objectRef, ExecutableElement method) Methods inherited from class OpCodeUtil
string
-
Field Details
-
returnAddress
-
cf
-
branch
-
in
-
opCodePosition
private int opCodePosition -
goneThrough
-
stackAt
-
lvAt
-
maxLocal
private int maxLocal -
maxStack
private int maxStack -
code
private byte[] code -
exceptionTable
-
mc
-
coverage
private boolean[] coverage -
lvType
-
-
Constructor Details
-
ByteCodeVerifier
public ByteCodeVerifier(byte[] code, ExceptionTable[] exceptionTable, ClassFile classFile, MethodCompiler mc)
-
-
Method Details
-
verify
- Throws:
IOException
-
branch
-
compare
-
run
- Throws:
IOExceptionClassNotFoundException
-
verify
-
verify1
-
verify2
-
c1
-
c2
-
getMaxStack
public int getMaxStack() -
getLocalType
-
verifyLocalType
-
verifyClass
-
verifyVirtualClass
-
verifyInterfaceClass
-
verifyReferenceOrArray
-
verifyByteOrBoolean
-
verifyByteOrBooleanArray
-
getIndexedVariable
-
getIndexedExecutable
-
getIndexedType
-
verifyMethod
public static void verifyMethod(Deque<TypeMirror> stack, ExecutableElement method) throws ClassNotFoundException - Throws:
ClassNotFoundException
-