public class JVMClassInfo extends ClassInfo
Modifier and Type | Field and Description |
---|---|
protected static StringSetMatcher |
excludeNestedInit |
protected static StringSetMatcher |
includeNestedInit |
protected static boolean |
nestedInit |
allInterfaces, autoloadAnnotations, autoloaded, bootstrapMethods, classFileUrl, classLoader, config, container, elementInfoAttrs, EMPTY_FIELDINFO_ARRAY, EMPTY_STRING_ARRAY, enableAssertions, enclosingClassName, enclosingMethodName, fieldsFactory, finalizer, genericSignature, id, ID_FIELD, iFields, INITIALIZED, innerClassNames, instanceDataOffset, instanceDataSize, interfaceNames, interfaces, isAbstract, isArray, isBuiltin, isClass, isEnum, isObjectClassInfo, isRefClassInfo, isReferenceArray, isStringClassInfo, isThreadClassInfo, isWeakReference, logger, methods, modifiers, name, nativePeer, nClassInfos, nInstanceFields, NO_INTERFACES, NO_METHODS, packageName, releaseActions, sFields, signature, source, sourceFileName, staticDataSize, superClass, superClassName, thisClassLoader, UNINITIALIZED, UNINITIALIZED_STRING, uniqueId
annotations, attr, typeAnnotations
Modifier | Constructor and Description |
---|---|
protected |
JVMClassInfo(ClassInfo funcInterface,
BootstrapMethodInfo bootstrapMethod,
java.lang.String name,
java.lang.String samUniqueName,
java.lang.String[] fieldTypesName) |
protected |
JVMClassInfo(ClassInfo ciAnnotation,
java.lang.String proxyName,
ClassLoaderInfo cli,
java.lang.String url) |
Modifier and Type | Method and Description |
---|---|
protected void |
addClassInit(ThreadInfo ti,
JVMDirectCallStackFrame frame,
JVMCodeBuilder cb) |
protected ClassInfo |
createAnnotationProxy(java.lang.String proxyName) |
DirectCallStackFrame |
createDirectCallStackFrame(ThreadInfo ti,
MethodInfo miCallee,
int nLocals) |
protected ClassInfo |
createFuncObjClassInfo(BootstrapMethodInfo bootstrapMethod,
java.lang.String name,
java.lang.String samUniqueName,
java.lang.String[] fieldTypesName)
This is called on the functional interface type.
|
DirectCallStackFrame |
createRunStartStackFrame(ThreadInfo ti,
MethodInfo miRun)
while this is a normal DirectCallStackFrame, it has different code which has to be created here
|
StackFrame |
createStackFrame(ThreadInfo ti,
MethodInfo callee) |
protected JVMCodeBuilder |
getSystemCodeBuilder(ClassFile cf,
MethodInfo mi) |
protected static boolean |
init(Config config) |
boolean |
initializeClass(ThreadInfo ti)
perform initialization of this class and its not-yet-initialized superclasses (top down),
which includes calling clinit() methods
This is overridden here to model a questionable yet consequential behavior of hotspot, which
is holding derived class locks when initializing base classes.
|
protected void |
setAnnotationValueGetterCode(MethodInfo pmi,
FieldInfo fi)
to be called from super proxy ctor
this needs to be in the VM specific ClassInfo because we need to create code
|
protected void |
setDirectCallCode(MethodInfo miDirectCall,
MethodInfo miCallee) |
protected void |
setLambdaDirectCallCode(MethodInfo miDirectCall,
BootstrapMethodInfo bootstrapMethod)
This method creates the body of the function object method that captures the
lambda behavior.
|
protected void |
setNativeCallCode(NativeMethodInfo miNative) |
protected void |
setRunStartCode(MethodInfo miStub,
MethodInfo miRun) |
addElementInfoAttr, addReleaseAction, areAssertionsEnabled, checkInheritedAnnotations, checkNoClinitInitialization, checkUnresolvedNativeMethods, cloneFor, computeSourceFileName, createInstanceFields, declaredMethodIterator, desiredAssertionStatus, equals, getAllInterfaceClassInfos, getAllInterfaces, getAnnotation, getAnnotationProxy, getAnnotations, getBootstrapMethodInfo, getClassFileUrl, getClassInfo, getClassLoaderInfo, getClassObject, getClassObjectRef, getClinit, getComponentClassInfo, getContainer, getDeclaredInstanceField, getDeclaredInstanceField, getDeclaredInstanceFields, getDeclaredMethodInfos, getDeclaredMethods, getDeclaredStaticField, getDeclaredStaticFields, getDefaultMethod, getDirectInterfaceNames, getElementInfoAttrs, getEnclosingClassInfo, getEnclosingClassName, getEnclosingMethodInfo, getEnclosingMethodName, getFieldAttrs, getFinalizer, getFinalizer0, getGenericSignature, getId, getInitializedClassInfo, getInitializedSystemClassInfo, getInnerClasses, getInnerClassInfos, getInstanceDataSize, getInstanceField, getInstanceField, getInstanceFields, getInterfaceAbstractMethod, getInterfaceClassInfos, getMatchingInstructions, getMatchingMethodInfos, getMethod, getMethod, getModifiableClassObject, getModifiableStaticElementInfo, getModifiers, getName, getNativePeer, getNumberOfDeclaredInstanceFields, getNumberOfInstanceFields, getNumberOfLoadedClasses, getNumberOfStaticFields, getNumberOfSuperClasses, getPackageName, getReflectionMethod, getResolvedAnnotationInfo, getSignature, getSimpleName, getSource, getSourceFileName, getStaticDataSize, getStaticElementInfo, getStaticField, getStaticField, getStaticFieldName, getStaticFieldValueObject, getStatics, getSuperClass, getSuperClass, getSuperClassName, getType, getUniqueId, hasAnnotations, hasCtors, hashCode, hasInnerClass, hasInstanceFieldInfoAttr, hasInstanceFields, hasReleaseAction, initializeClassAtomic, isAbstract, isArray, isBoxClass, isBuiltin, isBuiltinClass, isEnum, isEnum0, isInitialized, isInitializing, isInnerClassOf, isInstanceOf, isInstanceOf, isInterface, isObjectClassInfo, isObjectClassInfo, isObjectClassInfo0, isPrimitive, isRefClassInfo0, isReferenceArray, isReferenceClassInfo, isRegistered, isResolved, isStaticMethodAbstractionDeterministic, isStringClassInfo, isStringClassInfo, isStringClassInfo0, isSystemClass, isThreadClassInfo, isThreadClassInfo0, isWeakReference, isWeakReference0, iterator, linkFields, linkFields, loadAnnotationListeners, loadArrayInterfaces, loadBuiltinInterfaces, loadInterfaces, loadNativePeer, loadSource, loadSuperClass, makeModelClassPath, matchDeclaredMethods, matchMethods, needsInitialization, processJPFAnnotations, processJPFAttrAnnotation, processJPFConfigAnnotation, processNoJPFExecutionAnnotation, processReleaseActions, putDeclaredMethod, registerClass, resolveAndLink, resolveClass, resolveReferencedClass, setAnnotations, setAssertionStatus, setClass, setElementInfoAttrs, setEnclosingClass, setEnclosingMethod, setFields, setGenericSignature, setInitialized, setInitializing, setInnerClassNames, setInterfaceNames, setMethod, setMethods, setSourceFile, toString
addAnnotation, addAnnotations, addAttr, addTypeAnnotation, addTypeAnnotations, attrIterator, attrIterator, getAttr, getAttr, getDeclaredAnnotations, getNextAttr, getTargetTypeAnnotations, getTypeAnnotation, getTypeAnnotations, hasAnnotation, hasAttr, hasAttr, hasAttrValue, hasTypeAnnotation, hasTypeAnnotations, removeAttr, replaceAttr, setAttr, setTypeAnnotations
protected static boolean nestedInit
protected static StringSetMatcher includeNestedInit
protected static StringSetMatcher excludeNestedInit
protected JVMClassInfo(ClassInfo ciAnnotation, java.lang.String proxyName, ClassLoaderInfo cli, java.lang.String url)
protected JVMClassInfo(ClassInfo funcInterface, BootstrapMethodInfo bootstrapMethod, java.lang.String name, java.lang.String samUniqueName, java.lang.String[] fieldTypesName)
protected static boolean init(Config config)
protected ClassInfo createAnnotationProxy(java.lang.String proxyName)
createAnnotationProxy
in class ClassInfo
protected ClassInfo createFuncObjClassInfo(BootstrapMethodInfo bootstrapMethod, java.lang.String name, java.lang.String samUniqueName, java.lang.String[] fieldTypesName)
createFuncObjClassInfo
in class ClassInfo
public boolean initializeClass(ThreadInfo ti)
initializeClass
in class ClassInfo
protected void addClassInit(ThreadInfo ti, JVMDirectCallStackFrame frame, JVMCodeBuilder cb)
protected JVMCodeBuilder getSystemCodeBuilder(ClassFile cf, MethodInfo mi)
protected void setAnnotationValueGetterCode(MethodInfo pmi, FieldInfo fi)
setAnnotationValueGetterCode
in class ClassInfo
protected void setDirectCallCode(MethodInfo miDirectCall, MethodInfo miCallee)
setDirectCallCode
in class ClassInfo
protected void setNativeCallCode(NativeMethodInfo miNative)
setNativeCallCode
in class ClassInfo
protected void setRunStartCode(MethodInfo miStub, MethodInfo miRun)
setRunStartCode
in class ClassInfo
protected void setLambdaDirectCallCode(MethodInfo miDirectCall, BootstrapMethodInfo bootstrapMethod)
setLambdaDirectCallCode
in class ClassInfo
public StackFrame createStackFrame(ThreadInfo ti, MethodInfo callee)
createStackFrame
in class ClassInfo
public DirectCallStackFrame createDirectCallStackFrame(ThreadInfo ti, MethodInfo miCallee, int nLocals)
createDirectCallStackFrame
in class ClassInfo
public DirectCallStackFrame createRunStartStackFrame(ThreadInfo ti, MethodInfo miRun)
createRunStartStackFrame
in class ClassInfo