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, uniqueIdannotations, 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, toStringaddAnnotation, addAnnotations, addAttr, addTypeAnnotation, addTypeAnnotations, attrIterator, attrIterator, getAttr, getAttr, getDeclaredAnnotations, getNextAttr, getTargetTypeAnnotations, getTypeAnnotation, getTypeAnnotations, hasAnnotation, hasAttr, hasAttr, hasAttrValue, hasTypeAnnotation, hasTypeAnnotations, removeAttr, replaceAttr, setAttr, setTypeAnnotationsprotected 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 ClassInfoprotected ClassInfo createFuncObjClassInfo(BootstrapMethodInfo bootstrapMethod, java.lang.String name, java.lang.String samUniqueName, java.lang.String[] fieldTypesName)
createFuncObjClassInfo in class ClassInfopublic boolean initializeClass(ThreadInfo ti)
initializeClass in class ClassInfoprotected 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 ClassInfoprotected void setDirectCallCode(MethodInfo miDirectCall, MethodInfo miCallee)
setDirectCallCode in class ClassInfoprotected void setNativeCallCode(NativeMethodInfo miNative)
setNativeCallCode in class ClassInfoprotected void setRunStartCode(MethodInfo miStub, MethodInfo miRun)
setRunStartCode in class ClassInfoprotected void setLambdaDirectCallCode(MethodInfo miDirectCall, BootstrapMethodInfo bootstrapMethod)
setLambdaDirectCallCode in class ClassInfopublic StackFrame createStackFrame(ThreadInfo ti, MethodInfo callee)
createStackFrame in class ClassInfopublic DirectCallStackFrame createDirectCallStackFrame(ThreadInfo ti, MethodInfo miCallee, int nLocals)
createDirectCallStackFrame in class ClassInfopublic DirectCallStackFrame createRunStartStackFrame(ThreadInfo ti, MethodInfo miRun)
createRunStartStackFrame in class ClassInfo