Class TypeInfo
- java.lang.Object
-
- org.htmlunit.corejs.classfile.TypeInfo
-
final class TypeInfo extends java.lang.ObjectHelper class for internal representations of type information. In most cases, type information can be represented by a constant, but in some cases, a payload is included. Despite the payload coming after the type tag in the output, we store it in bits 8-23 for uniformity; the tag is always in bits 0-7.
-
-
Field Summary
Fields Modifier and Type Field Description (package private) static intDOUBLE(package private) static intFLOAT(package private) static intINTEGER(package private) static intLONG(package private) static intNULL(package private) static intOBJECT_TAG(package private) static intTOP(package private) static intUNINITIALIZED_THIS(package private) static intUNINITIALIZED_VAR_TAG
-
Constructor Summary
Constructors Modifier Constructor Description privateTypeInfo()
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description (package private) static intfromType(java.lang.String type, ConstantPool pool)Create type information from an internal type.private static java.lang.Class<?>getClassFromInternalName(java.lang.String internalName)Take an internal name and return a java.lang.Class instance that represents it.(package private) static intgetPayload(int typeInfo)(package private) static java.lang.StringgetPayloadAsType(int typeInfo, ConstantPool pool)Treat the result of getPayload as a constant pool index and fetch the corresponding String mapped to it.(package private) static intgetTag(int typeInfo)(package private) static booleanisTwoWords(int type)(package private) static intmerge(int current, int incoming, ConstantPool pool)Merge two verification types.(package private) static intOBJECT(int constantPoolIndex)(package private) static intOBJECT(java.lang.String type, ConstantPool pool)(package private) static voidprint(int[] locals, int[] stack, ConstantPool pool)(package private) static voidprint(int[] locals, int localsTop, int[] stack, int stackTop, ConstantPool pool)private static java.lang.StringtoString(int[] types, int typesTop, ConstantPool pool)(package private) static java.lang.StringtoString(int type, ConstantPool pool)(package private) static intUNINITIALIZED_VARIABLE(int bytecodeOffset)
-
-
-
Field Detail
-
TOP
static final int TOP
- See Also:
- Constant Field Values
-
INTEGER
static final int INTEGER
- See Also:
- Constant Field Values
-
FLOAT
static final int FLOAT
- See Also:
- Constant Field Values
-
DOUBLE
static final int DOUBLE
- See Also:
- Constant Field Values
-
LONG
static final int LONG
- See Also:
- Constant Field Values
-
NULL
static final int NULL
- See Also:
- Constant Field Values
-
UNINITIALIZED_THIS
static final int UNINITIALIZED_THIS
- See Also:
- Constant Field Values
-
OBJECT_TAG
static final int OBJECT_TAG
- See Also:
- Constant Field Values
-
UNINITIALIZED_VAR_TAG
static final int UNINITIALIZED_VAR_TAG
- See Also:
- Constant Field Values
-
-
Method Detail
-
OBJECT
static final int OBJECT(int constantPoolIndex)
-
OBJECT
static final int OBJECT(java.lang.String type, ConstantPool pool)
-
UNINITIALIZED_VARIABLE
static final int UNINITIALIZED_VARIABLE(int bytecodeOffset)
-
getTag
static final int getTag(int typeInfo)
-
getPayload
static final int getPayload(int typeInfo)
-
getPayloadAsType
static final java.lang.String getPayloadAsType(int typeInfo, ConstantPool pool)Treat the result of getPayload as a constant pool index and fetch the corresponding String mapped to it.Only works on OBJECT types.
-
fromType
static final int fromType(java.lang.String type, ConstantPool pool)Create type information from an internal type.
-
isTwoWords
static boolean isTwoWords(int type)
-
merge
static int merge(int current, int incoming, ConstantPool pool)Merge two verification types.In most cases, the verification types must be the same. For example, INTEGER and DOUBLE cannot be merged and an exception will be thrown. The basic rules are:
- If the types are equal, simply return one. - If either type is TOP, return TOP. - If either type is NULL, return the other type. - If both types are objects, find the lowest common ancestor in the class hierarchy.
This method uses reflection to traverse the class hierarchy. Therefore, it is assumed that the current class being generated is never the target of a full object-object merge, which would need to load the current class reflectively.
-
toString
static java.lang.String toString(int type, ConstantPool pool)
-
getClassFromInternalName
private static java.lang.Class<?> getClassFromInternalName(java.lang.String internalName)
Take an internal name and return a java.lang.Class instance that represents it.For example, given "java/lang/Object", returns the equivalent of Class.forName("java.lang.Object"), but also handles exceptions.
-
toString
private static java.lang.String toString(int[] types, int typesTop, ConstantPool pool)
-
print
static void print(int[] locals, int[] stack, ConstantPool pool)
-
print
static void print(int[] locals, int localsTop, int[] stack, int stackTop, ConstantPool pool)
-
-