类 SimpleVerifier
java.lang.Object
cn.taketoday.bytecode.tree.analysis.Interpreter<BasicValue>
cn.taketoday.bytecode.tree.analysis.BasicInterpreter
cn.taketoday.bytecode.tree.analysis.BasicVerifier
cn.taketoday.bytecode.tree.analysis.SimpleVerifier
- 所有已实现的接口:
Opcodes
An extended
BasicVerifier that performs more precise verifications. This verifier
computes exact class types, instead of using a single "object reference" type (as done in BasicVerifier).- 作者:
- Eric Bruneton, Bing Ran
-
字段概要
从类继承的字段 cn.taketoday.bytecode.tree.analysis.BasicInterpreter
NULL_TYPE从接口继承的字段 cn.taketoday.bytecode.Opcodes
AALOAD, AASTORE, ACC_ABSTRACT, ACC_ANNOTATION, ACC_BRIDGE, ACC_DEPRECATED, ACC_ENUM, ACC_FINAL, ACC_INTERFACE, ACC_MANDATED, ACC_MODULE, ACC_NATIVE, ACC_OPEN, ACC_PRIVATE, ACC_PROTECTED, ACC_PUBLIC, ACC_RECORD, ACC_STATIC, ACC_STATIC_PHASE, ACC_STRICT, ACC_SUPER, ACC_SYNCHRONIZED, ACC_SYNTHETIC, ACC_TRANSIENT, ACC_TRANSITIVE, ACC_VARARGS, ACC_VOLATILE, ACONST_NULL, ALOAD, ANEWARRAY, ARETURN, ARRAYLENGTH, ASTORE, ATHROW, BALOAD, BASTORE, BIPUSH, CALOAD, CASTORE, CHECKCAST, D2F, D2I, D2L, DADD, DALOAD, DASTORE, DCMPG, DCMPL, DCONST_0, DCONST_1, DDIV, DLOAD, DMUL, DNEG, DOUBLE, DREM, DRETURN, DSTORE, DSUB, DUP, DUP_X1, DUP_X2, DUP2, DUP2_X1, DUP2_X2, F_APPEND, F_CHOP, F_FULL, F_NEW, F_SAME, F_SAME1, F2D, F2I, F2L, FADD, FALOAD, FASTORE, FCMPG, FCMPL, FCONST_0, FCONST_1, FCONST_2, FDIV, FLOAD, FLOAT, FMUL, FNEG, FREM, FRETURN, FSTORE, FSUB, GETFIELD, GETSTATIC, GOTO, H_GETFIELD, H_GETSTATIC, H_INVOKEINTERFACE, H_INVOKESPECIAL, H_INVOKESTATIC, H_INVOKEVIRTUAL, H_NEWINVOKESPECIAL, H_PUTFIELD, H_PUTSTATIC, 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, IMUL, INEG, INSTANCEOF, INTEGER, INVOKEDYNAMIC, INVOKEINTERFACE, INVOKESPECIAL, INVOKESTATIC, INVOKEVIRTUAL, IOR, IREM, IRETURN, ISHL, ISHR, ISTORE, ISUB, IUSHR, IXOR, JAVA_VERSION, JSR, L2D, L2F, L2I, LADD, LALOAD, LAND, LASTORE, LCMP, LCONST_0, LCONST_1, LDC, LDIV, LLOAD, LMUL, LNEG, LONG, LOOKUPSWITCH, LOR, LREM, LRETURN, LSHL, LSHR, LSTORE, LSUB, LUSHR, LXOR, MONITORENTER, MONITOREXIT, MULTIANEWARRAY, NEW, NEWARRAY, NOP, NULL, POP, POP2, PRIVATE_FINAL_STATIC, PUTFIELD, PUTSTATIC, RET, RETURN, SALOAD, SASTORE, SIPUSH, SOURCE_DEPRECATED, SOURCE_MASK, SWAP, SWITCH_STYLE_HASH, SWITCH_STYLE_HASHONLY, SWITCH_STYLE_TRIE, T_BOOLEAN, T_BYTE, T_CHAR, T_DOUBLE, T_FLOAT, T_INT, T_LONG, T_SHORT, TABLESWITCH, TOP, UNINITIALIZED_THIS, V_PREVIEW, V1_1, V1_2, V1_3, V1_4, V1_5, V1_6, V1_7, V1_8, V10, V11, V12, V13, V14, V15, V16, V17, V18, V19, V9 -
构造器概要
构造器构造器说明Constructs a newSimpleVerifier.SimpleVerifier(Type currentClass, Type currentSuperClass, boolean isInterface) Constructs a newSimpleVerifierto verify a specific class.SimpleVerifier(Type currentClass, Type currentSuperClass, boolean isInterface, Type... currentClassInterfaces) Constructs a newSimpleVerifierto verify a specific class. -
方法概要
修饰符和类型方法说明protected Class<?>Loads the class corresponding to the given type.protected BasicValuegetElementValue(BasicValue objectArrayValue) Returns the value corresponding to the type of the elements of the given array reference value.protected TypegetSuperClass(Type type) Returns the type corresponding to the super class of the given type.protected booleanisArrayValue(BasicValue value) Returns whether the given value corresponds to an array reference.protected booleanisAssignableFrom(Type type1, Type type2) Returns whether the class corresponding to the first argument is either the same as, or is a superclass or superinterface of the class corresponding to the second argument.protected booleanisInterface(Type type) Returns whether the given type corresponds to the type of an interface.protected booleanisSubTypeOf(BasicValue value, BasicValue expected) Returns whether the type corresponding to the first argument is a subtype of the type corresponding to the second argument.merge(BasicValue value1, BasicValue value2) Merges two values.Creates a new value that represents the given type.voidsetClassLoader(ClassLoader loader) Sets theClassLoaderto be used ingetClass(cn.taketoday.bytecode.Type).从类继承的方法 cn.taketoday.bytecode.tree.analysis.BasicVerifier
binaryOperation, copyOperation, naryOperation, returnOperation, ternaryOperation, unaryOperation从类继承的方法 cn.taketoday.bytecode.tree.analysis.BasicInterpreter
newOperation从类继承的方法 cn.taketoday.bytecode.tree.analysis.Interpreter
newEmptyValue, newExceptionValue, newParameterValue, newReturnTypeValue
-
构造器详细资料
-
SimpleVerifier
public SimpleVerifier()Constructs a newSimpleVerifier. -
SimpleVerifier
Constructs a newSimpleVerifierto verify a specific class.- 参数:
currentClass- the type of the class to be verified.currentSuperClass- the type of the super class of the class to be verified.isInterface- whether the class to be verifier is an interface.
-
SimpleVerifier
public SimpleVerifier(Type currentClass, Type currentSuperClass, boolean isInterface, Type... currentClassInterfaces) Constructs a newSimpleVerifierto verify a specific class. This class will not be loaded into the JVM since it may be incorrect.- 参数:
currentClass- the type of the class to be verified.currentSuperClass- the type of the super class of the class to be verified.currentClassInterfaces- the types of the interfaces directly implemented by the class to be verified.isInterface- whether the class to be verifier is an interface.
-
-
方法详细资料
-
setClassLoader
Sets theClassLoaderto be used ingetClass(cn.taketoday.bytecode.Type).- 参数:
loader- theClassLoaderto use.
-
newValue
从类复制的说明:InterpreterCreates a new value that represents the given type.Called for method parameters (including
this), exception handler variable and withnulltype for variables reserved by long and double types.An interpreter may choose to implement one or more of
Interpreter.newReturnTypeValue(Type),Interpreter.newParameterValue(boolean, int, Type),Interpreter.newEmptyValue(int),Interpreter.newExceptionValue(TryCatchBlockNode, Frame, Type)to distinguish different types of new value.- 覆盖:
newValue在类中BasicInterpreter- 参数:
type- a primitive or reference type, or null to represent an uninitialized value.- 返回:
- a value that represents the given type. The size of the returned value must be equal to the size of the given type.
-
isArrayValue
从类复制的说明:BasicVerifierReturns whether the given value corresponds to an array reference.- 覆盖:
isArrayValue在类中BasicVerifier- 参数:
value- a value.- 返回:
- whether 'value' corresponds to an array reference.
-
getElementValue
从类复制的说明:BasicVerifierReturns the value corresponding to the type of the elements of the given array reference value.- 覆盖:
getElementValue在类中BasicVerifier- 参数:
objectArrayValue- a value corresponding to array of object (or array) references.- 返回:
- the value corresponding to the type of the elements of 'objectArrayValue'.
-
isSubTypeOf
从类复制的说明:BasicVerifierReturns whether the type corresponding to the first argument is a subtype of the type corresponding to the second argument.- 覆盖:
isSubTypeOf在类中BasicVerifier- 参数:
value- a value.expected- another value.- 返回:
- whether the type corresponding to 'value' is a subtype of the type corresponding to 'expected'.
-
merge
从类复制的说明:InterpreterMerges two values. The merge operation must return a value that represents both values (for instance, if the two values are two types, the merged value must be a common super type of the two types. If the two values are integer intervals, the merged value must be an interval that contains the previous ones. Likewise for other types of values).- 覆盖:
merge在类中BasicInterpreter- 参数:
value1- a value.value2- another value.- 返回:
- the merged value. If the merged value is equal to
value1, this method must returnvalue1.
-
isInterface
Returns whether the given type corresponds to the type of an interface. The default implementation of this method loads the class and uses the reflection API to return its result (unless the given type corresponds to the class being verified).- 参数:
type- a type.- 返回:
- whether 'type' corresponds to an interface.
-
getSuperClass
Returns the type corresponding to the super class of the given type. The default implementation of this method loads the class and uses the reflection API to return its result (unless the given type corresponds to the class being verified).- 参数:
type- a type.- 返回:
- the type corresponding to the super class of 'type'.
-
isAssignableFrom
Returns whether the class corresponding to the first argument is either the same as, or is a superclass or superinterface of the class corresponding to the second argument. The default implementation of this method loads the classes and uses the reflection API to return its result (unless the result can be computed from the class being verified, and the types of its super classes and implemented interfaces).- 参数:
type1- a type.type2- another type.- 返回:
- whether the class corresponding to 'type1' is either the same as, or is a superclass or superinterface of the class corresponding to 'type2'.
-
getClass
Loads the class corresponding to the given type. The class is loaded with the class loader specified withsetClassLoader(java.lang.ClassLoader), or with the class loader of this class if no class loader was specified.- 参数:
type- a type.- 返回:
- the class corresponding to 'type'.
-