public class ClassInfo extends InfoObject implements Iterable<MethodInfo>, GenericSignatureHolder
Modifier and Type | Field and Description |
---|---|
protected Set<String> |
allInterfaces
cache of all interfaceNames (parent interfaceNames and interface parents) - lazy eval
|
protected static Attributor |
attributor
optionally used to determine atomic declaredMethods of a class (during class loading)
|
protected String |
classFileUrl
Uniform resource locater for the class file.
|
protected ClassLoaderInfo |
classLoader
The classloader that defined (directly loaded) this class
|
protected ClassFileContainer |
container
from where the corresponding classfile was loaded (if this is not a builtin)
|
protected int |
elementInfoAttrs
type based object attributes (for GC, partial order reduction and
property checks)
|
protected boolean |
enableAssertions |
protected String |
enclosingClassName |
protected String |
enclosingMethodName |
protected static FieldsFactory |
fieldsFactory
our abstract factory to createAndInitialize object and class fields
|
protected MethodInfo |
finalizer |
protected String |
genericSignature
Generic type signatures of the class as per para.
|
protected int |
id
a search global numeric id that is only unique within this ClassLoader namespace.
|
protected FieldInfo[] |
iFields
our instance fields.
|
static int |
INITIALIZED |
protected String[] |
innerClassNames |
protected int |
instanceDataOffset
where in the instance data array (int[]) do our declared fields start
|
protected int |
instanceDataSize
the storage size of instances of this class (stored as an int[])
|
protected String[] |
interfaceNames
direct ifcs implemented by this class
|
protected Set<ClassInfo> |
interfaces |
protected boolean |
isAbstract |
protected boolean |
isArray |
protected boolean |
isBuiltin |
protected boolean |
isClass |
protected boolean |
isEnum |
protected boolean |
isObjectClassInfo |
protected boolean |
isRefClassInfo |
protected boolean |
isReferenceArray |
protected boolean |
isStringClassInfo |
protected boolean |
isThreadClassInfo |
protected boolean |
isWeakReference |
protected Map<String,MethodInfo> |
methods
all our declared declaredMethods (we don't flatten, this is not
a high-performance VM)
|
protected String |
name
Name of the class.
|
protected int |
nInstanceFields
total number of instance fields (flattened, not only declared ones)
|
protected String |
packageName
Name of the package.
|
protected ImmutableList<ReleaseAction> |
releaseActions
actions to be taken when an object of this type is gc'ed
|
protected FieldInfo[] |
sFields
our static fields.
|
protected String |
signature
type erased signature of the class.
|
protected Source |
source
Source file associated with the class.
|
protected String |
sourceFileName
this is only set if the classfile has a SourceFile class attribute
|
protected int |
staticDataSize
the storage size of static fields of this class (stored as an int[])
|
protected ClassInfo |
superClass
we only set the superClassName upon creation, it is instantiated into
a ClassInfo by resolveReferencedClass(), which is required to be called before
we can createAndInitialize objects of this type
|
protected String |
superClassName |
protected static ClassLoader |
thisClassLoader
ClassLoader that loaded this class.
|
static int |
UNINITIALIZED |
protected long |
uniqueId
A search global unique id associate with this class, which is comprised of the classLoader id
and the (loader-specific) ClassInfo id.
|
annotations, attr
Modifier | Constructor and Description |
---|---|
protected |
ClassInfo() |
protected |
ClassInfo(ClassInfo annotationCls,
String name,
ClassLoaderInfo classLoader,
String url)
createAndInitialize a fully synthetic implementation of an Annotation proxy
|
protected |
ClassInfo(ClassParser parser) |
protected |
ClassInfo(String builtinClassName,
ClassLoaderInfo classLoader)
ClassInfo ctor used for builtin types (arrays and primitive types)
idx.e.
|
|
ClassInfo(String name,
ClassLoaderInfo classLoader,
ClassParser parser,
String classFileUrl) |
Modifier and Type | Method and Description |
---|---|
void |
addElementInfoAttr(int attr) |
void |
addReleaseAction(ReleaseAction action)
NOTE - this can only be set *before* subclasses are loaded (e.g.
|
boolean |
areAssertionsEnabled()
public static ClassInfo getAnnotationProxy (ClassInfo ciAnnotation){
ThreadInfo ti = ThreadInfo.getCurrentThread();
// make sure the annotationCls is initialized (no code there)
if (!ciAnnotation.isInitialized()) {
ciAnnotation.registerClass(ti);
ciAnnotation.setInitialized(); // no clinit
}
String url = computeProxyUrl(ciAnnotation);
ClassInfo ci = null; // getOriginalClassInfo(url);
if (ci == null){
String cname = ciAnnotation.getName() + "$Proxy";
ci = new ClassInfo(ciAnnotation, cname, ciAnnotation.classLoader, url);
ciAnnotation.classLoader.addResolvedClass(ci);
if (!ci.isInitialized()){
ci.registerClass(ti);
ci.setInitialized();
}
}
return ci;
}
|
protected void |
checkInheritedAnnotations() |
protected void |
checkNoClinitInitialization() |
ClassInfo |
cloneFor(ClassLoaderInfo cl)
It creates an instance from a original ClassInfo instance.
|
protected static String |
computeClassFileUrl(ClassFileMatch match,
String typeName,
ClassLoaderInfo cl) |
protected String |
computeSourceFileName() |
protected ClassInfo |
createAnnotationProxy(String proxyName) |
DirectCallStackFrame |
createDirectCallStackFrame(ThreadInfo ti,
MethodInfo callee,
int nLocalSlots) |
Fields |
createInstanceFields()
Creates the fields for an object.
|
DirectCallStackFrame |
createRunStartStackFrame(ThreadInfo ti,
MethodInfo miRun) |
StackFrame |
createStackFrame(ThreadInfo ti,
MethodInfo callee) |
Iterator<MethodInfo> |
declaredMethodIterator() |
boolean |
desiredAssertionStatus() |
boolean |
equals(Object o)
default implementation is just an identity check
|
Set<ClassInfo> |
getAllInterfaceClassInfos()
not very efficient, but chances are we cache the allInterfaces, and then
repetitive use would be faster
|
Set<String> |
getAllInterfaces()
get names of all interfaceNames (transitive, idx.e.
|
AnnotationInfo |
getAnnotation(String annotationName) |
ClassInfo |
getAnnotationProxy() |
AnnotationInfo[] |
getAnnotations()
return all annotations, which includes the ones inherited from our superclasses
NOTE - this is not very efficient
|
String |
getClassFileUrl() |
ClassInfo |
getClassInfo()
required by InfoObject interface
|
ClassLoaderInfo |
getClassLoaderInfo()
Returns the class loader that
|
ElementInfo |
getClassObject() |
int |
getClassObjectRef() |
MethodInfo |
getClinit() |
ClassInfo |
getComponentClassInfo() |
ClassFileContainer |
getContainer() |
FieldInfo |
getDeclaredInstanceField(int i) |
FieldInfo |
getDeclaredInstanceField(String fName)
FieldInfo lookup in the fields that are declared in this class
|
FieldInfo[] |
getDeclaredInstanceFields() |
MethodInfo[] |
getDeclaredMethodInfos() |
FieldInfo |
getDeclaredStaticField(String fName)
FieldInfo lookup in the static fields that are declared in this class
<2do> pcm - should employ a map at some point, but it's usually not that
important since we can cash the returned FieldInfo in the PUT/GET_STATIC insns
|
FieldInfo[] |
getDeclaredStaticFields() |
String[] |
getDirectInterfaceNames()
get names of directly implemented interfaceNames
|
int |
getElementInfoAttrs() |
ClassInfo |
getEnclosingClassInfo()
beware - this loads (but not yet registers) the enclosing class
|
String |
getEnclosingClassName()
beware - this loads (but not yet registers) the enclosing class
|
MethodInfo |
getEnclosingMethodInfo()
same restriction as getEnclosingClassInfo() - might not be registered/initialized
|
String |
getEnclosingMethodName() |
int |
getFieldAttrs(int fieldIndex) |
MethodInfo |
getFinalizer() |
protected MethodInfo |
getFinalizer0() |
String |
getGenericSignature() |
int |
getId() |
static ClassInfo |
getInitializedClassInfo(String clsName,
ThreadInfo ti)
this one is for clients that need to synchronously get an initialized classinfo.
|
static ClassInfo |
getInitializedSystemClassInfo(String clsName,
ThreadInfo ti) |
String[] |
getInnerClasses()
get names of direct inner classes
|
ClassInfo[] |
getInnerClassInfos() |
int |
getInstanceDataSize() |
FieldInfo |
getInstanceField(int i) |
FieldInfo |
getInstanceField(String fName)
base relative FieldInfo lookup - the workhorse
<2do> again, should eventually use Maps
|
FieldInfo[] |
getInstanceFields() |
Set<ClassInfo> |
getInterfaceClassInfos() |
Instruction[] |
getMatchingInstructions(LocationSpec lspec) |
List<MethodInfo> |
getMatchingMethodInfos(MethodSpec mspec) |
MethodInfo |
getMethod(String uniqueName,
boolean isRecursiveLookup)
Note that 'uniqueName' is the name plus the argument type part of the
signature, idx.e.
|
MethodInfo |
getMethod(String name,
String signature,
boolean isRecursiveLookup)
if we don't know the return type
signature is in paren/dot notation
|
ElementInfo |
getModifiableClassObject() |
StaticElementInfo |
getModifiableStaticElementInfo() |
int |
getModifiers() |
String |
getName()
Returns the name of the class.
|
NativePeer |
getNativePeer() |
int |
getNumberOfDeclaredInstanceFields() |
int |
getNumberOfInstanceFields() |
static int |
getNumberOfLoadedClasses() |
int |
getNumberOfStaticFields() |
String |
getPackageName() |
MethodInfo |
getReflectionMethod(String fullName,
boolean isRecursiveLookup)
almost the same as above, except of that Class.getMethod() doesn't specify
the return type.
|
AnnotationInfo |
getResolvedAnnotationInfo(String typeName) |
String |
getSignature() |
String |
getSimpleName() |
Source |
getSource() |
String |
getSourceFileName() |
int |
getStaticDataSize() |
StaticElementInfo |
getStaticElementInfo() |
FieldInfo |
getStaticField(int index)
Returns the information about a static field.
|
FieldInfo |
getStaticField(String fName)
Search up the class hierarchy to find a static field
|
String |
getStaticFieldName(int index)
Returns the name of a static field.
|
Object |
getStaticFieldValueObject(String id) |
Statics |
getStatics()
the container this is stored in
|
ClassInfo |
getSuperClass()
Return the super class.
|
ClassInfo |
getSuperClass(String clsName)
return the ClassInfo for the provided superclass name.
|
String |
getSuperClassName() |
String |
getType()
Returns the type of a class.
|
long |
getUniqueId() |
boolean |
hasAnnotations() |
boolean |
hasCtors() |
int |
hashCode() |
boolean |
hasInnerClass(String innerName) |
boolean |
hasInstanceFieldInfoAttr(Class<?> type) |
boolean |
hasInstanceFields() |
boolean |
hasReleaseAction(ReleaseAction action) |
boolean |
initializeClass(ThreadInfo ti)
perform static initialization of class
this recursively initializes all super classes, but NOT the interfaces
|
boolean |
isAbstract() |
boolean |
isArray() |
boolean |
isBoxClass()
<2do> that's stupid - we should use subclasses for builtin and box types
|
boolean |
isBuiltin() |
boolean |
isEnum() |
protected boolean |
isEnum0() |
boolean |
isInitialized() |
boolean |
isInitializing() |
boolean |
isInnerClassOf(String enclosingName) |
boolean |
isInstanceOf(ClassInfo ci) |
boolean |
isInstanceOf(String cname)
Returns true if the given class is an instance of the class
or interface specified.
|
boolean |
isInterface() |
boolean |
isObjectClassInfo() |
static boolean |
isObjectClassInfo(ClassInfo ci) |
protected boolean |
isObjectClassInfo0() |
boolean |
isPrimitive()
whether this refers to a primitive type.
|
protected boolean |
isRefClassInfo0() |
boolean |
isReferenceArray() |
boolean |
isReferenceClassInfo()
note this only returns true is this is really the java.lang.ref.Reference classInfo
|
boolean |
isRegistered() |
boolean |
isResolved() |
boolean |
isStaticMethodAbstractionDeterministic(ThreadInfo th,
MethodInfo mi)
Checks if a static method call is deterministic, but only for
abtraction based determinism, due to Bandera.choose() calls
|
boolean |
isStringClassInfo() |
static boolean |
isStringClassInfo(ClassInfo ci) |
protected boolean |
isStringClassInfo0() |
boolean |
isSystemClass()
Returns true if the class is a system class.
|
boolean |
isThreadClassInfo() |
protected boolean |
isThreadClassInfo0() |
boolean |
isWeakReference()
is this a (subclass of) WeakReference? this must be efficient, since it's
called in the mark phase on all live objects
|
protected boolean |
isWeakReference0() |
Iterator<MethodInfo> |
iterator() |
protected void |
linkFields() |
protected int |
linkFields(FieldInfo[] fields,
int idx,
int off) |
protected static String[] |
loadArrayInterfaces() |
protected static String[] |
loadBuiltinInterfaces(String type) |
protected Set<ClassInfo> |
loadInterfaces(String[] ifcNames) |
protected NativePeer |
loadNativePeer() |
protected Source |
loadSource() |
protected ClassInfo |
loadSuperClass(String superName) |
static String |
makeModelClassPath(Config config) |
void |
matchDeclaredMethods(MethodLocator loc)
iterate over all declaredMethods declared in this class, until the provided
MethodLocator tells us it's done
|
void |
matchMethods(MethodLocator loc)
iterate over all declaredMethods of this class (and it's superclasses), until
the provided MethodLocator tells us it's done
|
boolean |
needsInitialization() |
void |
processReleaseActions(ElementInfo ei)
recursively process release actions registered for this type or any of
its super types (only classes).
|
protected boolean |
pushClinit(ThreadInfo ti)
local class initialization
|
boolean |
pushRequiredClinits(ThreadInfo ti)
check if this class requires clinit execution.
|
MethodInfo |
putDeclaredMethod(MethodInfo mi)
be careful, this replaces or adds MethodInfos dynamically
|
StaticElementInfo |
registerClass(ThreadInfo ti)
this registers a ClassInfo in the corresponding ClassLoader statics so that we can cross-link from
SUT code and access static fields.
|
protected void |
resolveClass()
loads superclass and direct interfaces, and computes information
that depends on them
|
ClassInfo |
resolveReferencedClass(String cname)
get a ClassInfo for a referenced type that is resolved with the same classLoader, but make
sure we only do this once per path
This method is called by the following bytecode instructions:
anewarray, checkcast, getstatic, instanceof, invokespecial,
invokestatic, ldc, ldc_w, multianewarray, new, and putstatic
It loads the class referenced by these instructions and adds it to the
resolvedClasses map of the classLoader
|
void |
setAnnotations(AnnotationInfo[] annotations) |
protected void |
setAnnotationValueGetterCode(MethodInfo pmi,
FieldInfo fi) |
protected void |
setAssertionStatus() |
void |
setClass(String clsName,
String superClsName,
int flags,
int cpCount) |
void |
setContainer(ClassFileContainer c) |
protected void |
setDirectCallCode(MethodInfo miCallee,
MethodInfo miStub) |
void |
setElementInfoAttrs(int attrs) |
void |
setEnclosingClass(String clsName) |
void |
setEnclosingMethod(String mthName) |
void |
setFields(FieldInfo[] fields) |
void |
setGenericSignature(String sig) |
void |
setInitialized() |
void |
setInitializing(ThreadInfo ti) |
void |
setInnerClassNames(String[] clsNames) |
void |
setInterfaceNames(String[] ifcNames) |
void |
setMethods(MethodInfo[] methods) |
protected void |
setNativeCallCode(NativeMethodInfo miNative) |
protected void |
setRunStartCode(MethodInfo miRun,
MethodInfo miStub) |
void |
setSourceFile(String fileName) |
String |
toString() |
addAnnotation, addAttr, attrIterator, attrIterator, getAttr, getAttr, getDeclaredAnnotations, getNextAttr, hasAttr, hasAttr, hasAttrValue, removeAttr, replaceAttr, setAttr
public static final int UNINITIALIZED
public static final int INITIALIZED
protected static final ClassLoader thisClassLoader
protected static Attributor attributor
protected static FieldsFactory fieldsFactory
protected String name
protected String signature
protected String genericSignature
protected ClassLoaderInfo classLoader
protected boolean isClass
protected boolean isWeakReference
protected boolean isObjectClassInfo
protected boolean isStringClassInfo
protected boolean isThreadClassInfo
protected boolean isRefClassInfo
protected boolean isArray
protected boolean isEnum
protected boolean isReferenceArray
protected boolean isAbstract
protected boolean isBuiltin
protected MethodInfo finalizer
protected int elementInfoAttrs
protected Map<String,MethodInfo> methods
protected FieldInfo[] iFields
protected int instanceDataSize
protected int instanceDataOffset
protected int nInstanceFields
protected FieldInfo[] sFields
protected int staticDataSize
protected ClassInfo superClass
protected String superClassName
protected String enclosingClassName
protected String enclosingMethodName
protected String[] innerClassNames
protected String[] interfaceNames
protected Set<String> allInterfaces
protected String packageName
protected String sourceFileName
protected String classFileUrl
protected ClassFileContainer container
protected int id
protected long uniqueId
protected Source source
protected boolean enableAssertions
protected ImmutableList<ReleaseAction> releaseActions
protected ClassInfo(ClassParser parser) throws ClassParseException
ClassParseException
public ClassInfo(String name, ClassLoaderInfo classLoader, ClassParser parser, String classFileUrl) throws ClassParseException
ClassParseException
protected ClassInfo()
protected ClassInfo(String builtinClassName, ClassLoaderInfo classLoader)
protected ClassInfo(ClassInfo annotationCls, String name, ClassLoaderInfo classLoader, String url)
public static boolean isObjectClassInfo(ClassInfo ci)
public static boolean isStringClassInfo(ClassInfo ci)
public void setClass(String clsName, String superClsName, int flags, int cpCount) throws ClassParseException
ClassParseException
public void setInnerClassNames(String[] clsNames)
public void setEnclosingClass(String clsName)
public void setEnclosingMethod(String mthName)
public void setInterfaceNames(String[] ifcNames)
public void setSourceFile(String fileName)
public void setFields(FieldInfo[] fields)
public void setMethods(MethodInfo[] methods)
public AnnotationInfo getResolvedAnnotationInfo(String typeName)
public void setAnnotations(AnnotationInfo[] annotations)
setAnnotations
in class InfoObject
public boolean hasAnnotations()
hasAnnotations
in class InfoObject
public AnnotationInfo[] getAnnotations()
getAnnotations
in class InfoObject
public AnnotationInfo getAnnotation(String annotationName)
getAnnotation
in class InfoObject
public static int getNumberOfLoadedClasses()
protected void setAnnotationValueGetterCode(MethodInfo pmi, FieldInfo fi)
protected void setDirectCallCode(MethodInfo miCallee, MethodInfo miStub)
protected void setNativeCallCode(NativeMethodInfo miNative)
protected void setRunStartCode(MethodInfo miRun, MethodInfo miStub)
public boolean equals(Object o)
Object
protected String computeSourceFileName()
protected NativePeer loadNativePeer()
public ClassLoaderInfo getClassLoaderInfo()
public Statics getStatics()
public ClassInfo getClassInfo()
protected void setAssertionStatus()
public boolean desiredAssertionStatus()
public String getGenericSignature()
getGenericSignature
in interface GenericSignatureHolder
public void setGenericSignature(String sig)
setGenericSignature
in interface GenericSignatureHolder
public boolean isArray()
public boolean isEnum()
public boolean isAbstract()
public boolean isBuiltin()
public boolean isInterface()
public boolean isReferenceArray()
public boolean isObjectClassInfo()
public boolean isStringClassInfo()
public boolean isThreadClassInfo()
protected void checkNoClinitInitialization()
public ClassInfo getAnnotationProxy()
public boolean areAssertionsEnabled()
public boolean hasInstanceFields()
public ElementInfo getClassObject()
public ElementInfo getModifiableClassObject()
public int getClassObjectRef()
public ClassFileContainer getContainer()
public void setContainer(ClassFileContainer c)
protected static String computeClassFileUrl(ClassFileMatch match, String typeName, ClassLoaderInfo cl)
public String getClassFileUrl()
public boolean hasReleaseAction(ReleaseAction action)
public void addReleaseAction(ReleaseAction action)
public void processReleaseActions(ElementInfo ei)
public int getModifiers()
public MethodInfo getMethod(String uniqueName, boolean isRecursiveLookup)
public MethodInfo getMethod(String name, String signature, boolean isRecursiveLookup)
public MethodInfo getReflectionMethod(String fullName, boolean isRecursiveLookup)
public void matchMethods(MethodLocator loc)
public void matchDeclaredMethods(MethodLocator loc)
public Iterator<MethodInfo> iterator()
iterator
in interface Iterable<MethodInfo>
public Iterator<MethodInfo> declaredMethodIterator()
public FieldInfo getStaticField(String fName)
fName
- name of fieldpublic FieldInfo[] getDeclaredStaticFields()
public FieldInfo[] getDeclaredInstanceFields()
public FieldInfo getDeclaredStaticField(String fName)
public FieldInfo getInstanceField(String fName)
fName
- the field namepublic FieldInfo getDeclaredInstanceField(String fName)
public String getSignature()
public String getName()
public String getSimpleName()
public String getPackageName()
public int getId()
public long getUniqueId()
public int getFieldAttrs(int fieldIndex)
public void setElementInfoAttrs(int attrs)
public void addElementInfoAttr(int attr)
public int getElementInfoAttrs()
public Source getSource()
public String getSourceFileName()
public FieldInfo getStaticField(int index)
public String getStaticFieldName(int index)
public boolean isStaticMethodAbstractionDeterministic(ThreadInfo th, MethodInfo mi)
public String getSuperClassName()
public ClassInfo getSuperClass()
public ClassInfo getSuperClass(String clsName)
public String getEnclosingClassName()
public ClassInfo getEnclosingClassInfo()
public String getEnclosingMethodName()
public MethodInfo getEnclosingMethodInfo()
public boolean isSystemClass()
public boolean isBoxClass()
public String getType()
public boolean isWeakReference()
public boolean isReferenceClassInfo()
public boolean isPrimitive()
public boolean hasInstanceFieldInfoAttr(Class<?> type)
public NativePeer getNativePeer()
public boolean isInstanceOf(String cname)
public boolean isInstanceOf(ClassInfo ci)
public boolean isInnerClassOf(String enclosingName)
public boolean hasInnerClass(String innerName)
protected static String[] loadArrayInterfaces()
public int getInstanceDataSize()
public int getNumberOfDeclaredInstanceFields()
public FieldInfo getDeclaredInstanceField(int i)
public int getNumberOfInstanceFields()
public FieldInfo getInstanceField(int i)
public FieldInfo[] getInstanceFields()
public int getStaticDataSize()
public int getNumberOfStaticFields()
protected Source loadSource()
public Set<String> getAllInterfaces()
public String[] getDirectInterfaceNames()
public Set<ClassInfo> getAllInterfaceClassInfos()
public String[] getInnerClasses()
public ClassInfo[] getInnerClassInfos()
public ClassInfo getComponentClassInfo()
public MethodInfo putDeclaredMethod(MethodInfo mi)
public MethodInfo[] getDeclaredMethodInfos()
public Instruction[] getMatchingInstructions(LocationSpec lspec)
public List<MethodInfo> getMatchingMethodInfos(MethodSpec mspec)
public MethodInfo getFinalizer()
public MethodInfo getClinit()
public boolean hasCtors()
public static ClassInfo getInitializedSystemClassInfo(String clsName, ThreadInfo ti)
public static ClassInfo getInitializedClassInfo(String clsName, ThreadInfo ti)
public boolean isRegistered()
public StaticElementInfo registerClass(ThreadInfo ti)
public boolean isInitializing()
public boolean isInitialized()
public boolean isResolved()
public boolean needsInitialization()
public void setInitializing(ThreadInfo ti)
public boolean pushRequiredClinits(ThreadInfo ti)
public void setInitialized()
public boolean initializeClass(ThreadInfo ti)
ti
- executing threadprotected boolean pushClinit(ThreadInfo ti)
public StaticElementInfo getStaticElementInfo()
public StaticElementInfo getModifiableStaticElementInfo()
public Fields createInstanceFields()
protected ClassInfo loadSuperClass(String superName) throws ClassInfoException
ClassInfoException
protected Set<ClassInfo> loadInterfaces(String[] ifcNames) throws ClassInfoException
ClassInfoException
protected void resolveClass()
public ClassInfo resolveReferencedClass(String cname)
protected int linkFields(FieldInfo[] fields, int idx, int off)
protected void linkFields()
protected void checkInheritedAnnotations()
protected MethodInfo getFinalizer0()
protected boolean isObjectClassInfo0()
protected boolean isStringClassInfo0()
protected boolean isRefClassInfo0()
protected boolean isWeakReference0()
protected boolean isEnum0()
protected boolean isThreadClassInfo0()
public ClassInfo cloneFor(ClassLoaderInfo cl)
public StackFrame createStackFrame(ThreadInfo ti, MethodInfo callee)
public DirectCallStackFrame createDirectCallStackFrame(ThreadInfo ti, MethodInfo callee, int nLocalSlots)
public DirectCallStackFrame createRunStartStackFrame(ThreadInfo ti, MethodInfo miRun)