public class ClassInfo extends InfoObject implements java.lang.Iterable<MethodInfo>, GenericSignatureHolder
Modifier and Type | Field and Description |
---|---|
protected java.util.Set<ClassInfo> |
allInterfaces
cache of all interfaceNames (parent interfaceNames and interface parents) - lazy eval
|
protected static java.util.HashSet<java.lang.String> |
autoloadAnnotations
support to auto-load listeners from annotations
|
protected static java.util.HashSet<java.lang.String> |
autoloaded |
protected BootstrapMethodInfo[] |
bootstrapMethods |
protected java.lang.String |
classFileUrl
Uniform resource locater for the class file.
|
protected ClassLoaderInfo |
classLoader
The classloader that defined (directly loaded) this class
|
protected static Config |
config |
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 static FieldInfo[] |
EMPTY_FIELDINFO_ARRAY |
protected static java.lang.String[] |
EMPTY_STRING_ARRAY |
protected boolean |
enableAssertions |
protected java.lang.String |
enclosingClassName |
protected java.lang.String |
enclosingMethodName |
protected static FieldsFactory |
fieldsFactory
our abstract factory to createAndInitialize object and class fields
|
protected MethodInfo |
finalizer |
protected java.lang.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 static java.lang.String |
ID_FIELD |
protected FieldInfo[] |
iFields
our instance fields.
|
static int |
INITIALIZED |
protected java.lang.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 java.lang.String[] |
interfaceNames
direct ifcs implemented by this class
|
protected java.util.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 static JPFLogger |
logger |
protected java.util.Map<java.lang.String,MethodInfo> |
methods
all our declared declaredMethods (we don't flatten, this is not
a high-performance VM)
|
protected int |
modifiers |
protected java.lang.String |
name
Name of the class.
|
protected NativePeer |
nativePeer
this is the object we use to enter declaredMethods in the underlying VM
(it replaces Reflection)
|
protected static int |
nClassInfos |
protected int |
nInstanceFields
total number of instance fields (flattened, not only declared ones)
|
protected static java.util.Set<ClassInfo> |
NO_INTERFACES |
protected static java.util.Map<java.lang.String,MethodInfo> |
NO_METHODS |
protected java.lang.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 java.lang.String |
signature
type erased signature of the class.
|
protected Source |
source
Source file associated with the class.
|
protected java.lang.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 java.lang.String |
superClassName |
protected static java.lang.ClassLoader |
thisClassLoader
ClassLoader that loaded this class.
|
static int |
UNINITIALIZED |
protected static java.lang.String |
UNINITIALIZED_STRING |
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, typeAnnotations
Modifier | Constructor and Description |
---|---|
protected |
ClassInfo() |
protected |
ClassInfo(ClassInfo funcInterface,
BootstrapMethodInfo bootstrapMethod,
java.lang.String name,
java.lang.String[] fieldTypesName) |
protected |
ClassInfo(ClassInfo annotationCls,
java.lang.String name,
ClassLoaderInfo classLoader,
java.lang.String url)
createAndInitialize a fully synthetic implementation of an Annotation proxy
|
protected |
ClassInfo(java.lang.String builtinClassName,
ClassLoaderInfo classLoader)
ClassInfo ctor used for builtin types (arrays and primitive types)
idx.e.
|
protected |
ClassInfo(java.lang.String name,
ClassLoaderInfo cli,
java.lang.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() |
protected void |
checkUnresolvedNativeMethods() |
ClassInfo |
cloneFor(ClassLoaderInfo cl)
It creates an instance from a original ClassInfo instance.
|
protected java.lang.String |
computeSourceFileName() |
protected ClassInfo |
createAnnotationProxy(java.lang.String proxyName) |
DirectCallStackFrame |
createDirectCallStackFrame(ThreadInfo ti,
MethodInfo callee,
int nLocalSlots) |
protected ClassInfo |
createFuncObjClassInfo(BootstrapMethodInfo bootstrapMethod,
java.lang.String name,
java.lang.String samUniqueName,
java.lang.String[] fieldTypesName) |
Fields |
createInstanceFields()
Creates the fields for an object.
|
DirectCallStackFrame |
createRunStartStackFrame(ThreadInfo ti,
MethodInfo miRun) |
StackFrame |
createStackFrame(ThreadInfo ti,
MethodInfo callee) |
java.util.Iterator<MethodInfo> |
declaredMethodIterator() |
boolean |
desiredAssertionStatus() |
boolean |
equals(java.lang.Object o) |
java.util.Set<ClassInfo> |
getAllInterfaceClassInfos() |
java.util.Set<ClassInfo> |
getAllInterfaces()
get names of all interfaceNames (transitive, idx.e.
|
AnnotationInfo |
getAnnotation(java.lang.String annotationName) |
ClassInfo |
getAnnotationProxy() |
AnnotationInfo[] |
getAnnotations()
return all annotations, which includes the ones inherited from our superclasses
NOTE - this is not very efficient
|
BootstrapMethodInfo |
getBootstrapMethodInfo(int index) |
java.lang.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(java.lang.String fName)
FieldInfo lookup in the fields that are declared in this class
|
FieldInfo[] |
getDeclaredInstanceFields() |
MethodInfo[] |
getDeclaredMethodInfos() |
protected java.util.Map<java.lang.String,MethodInfo> |
getDeclaredMethods()
most definitely not a public method, but handy for the NativePeer
|
FieldInfo |
getDeclaredStaticField(java.lang.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() |
MethodInfo |
getDefaultMethod(java.lang.String uniqueName) |
java.lang.String[] |
getDirectInterfaceNames()
get names of directly implemented interfaceNames
|
int |
getElementInfoAttrs() |
ClassInfo |
getEnclosingClassInfo()
beware - this loads (but not yet registers) the enclosing class
|
java.lang.String |
getEnclosingClassName()
beware - this loads (but not yet registers) the enclosing class
|
MethodInfo |
getEnclosingMethodInfo()
same restriction as getEnclosingClassInfo() - might not be registered/initialized
|
java.lang.String |
getEnclosingMethodName() |
int |
getFieldAttrs(int fieldIndex) |
MethodInfo |
getFinalizer() |
protected MethodInfo |
getFinalizer0() |
java.lang.String |
getGenericSignature() |
int |
getId() |
static ClassInfo |
getInitializedClassInfo(java.lang.String clsName,
ThreadInfo ti)
this one is for clients that need to synchronously get an initialized classinfo.
|
static ClassInfo |
getInitializedSystemClassInfo(java.lang.String clsName,
ThreadInfo ti)
see getInitializedClassInfo() for restrictions.
|
java.lang.String[] |
getInnerClasses()
get names of direct inner classes
|
ClassInfo[] |
getInnerClassInfos() |
int |
getInstanceDataSize() |
FieldInfo |
getInstanceField(int i) |
FieldInfo |
getInstanceField(java.lang.String fName)
base relative FieldInfo lookup - the workhorse
<2do> again, should eventually use Maps
|
FieldInfo[] |
getInstanceFields() |
MethodInfo |
getInterfaceAbstractMethod()
This retrieves the SAM from this functional interface.
|
java.util.Set<ClassInfo> |
getInterfaceClassInfos() |
Instruction[] |
getMatchingInstructions(LocationSpec lspec) |
java.util.List<MethodInfo> |
getMatchingMethodInfos(MethodSpec mspec) |
MethodInfo |
getMethod(java.lang.String uniqueName,
boolean isRecursiveLookup)
Note that 'uniqueName' is the name plus the argument type part of the
signature, idx.e.
|
MethodInfo |
getMethod(java.lang.String name,
java.lang.String signature,
boolean isRecursiveLookup)
if we don't know the return type
signature is in paren/dot notation
|
ElementInfo |
getModifiableClassObject() |
StaticElementInfo |
getModifiableStaticElementInfo() |
int |
getModifiers() |
java.lang.String |
getName()
Returns the name of the class.
|
NativePeer |
getNativePeer() |
int |
getNumberOfDeclaredInstanceFields() |
int |
getNumberOfInstanceFields() |
static int |
getNumberOfLoadedClasses() |
int |
getNumberOfStaticFields() |
int |
getNumberOfSuperClasses() |
java.lang.String |
getPackageName() |
MethodInfo |
getReflectionMethod(java.lang.String fullName,
boolean isRecursiveLookup)
method lookup for use by reflection methods (java.lang.Class.getXMethod)
note this doesn't specify the return type, which means covariant return
types are not allowed in reflection lookup.
|
AnnotationInfo |
getResolvedAnnotationInfo(java.lang.String typeName) |
java.lang.String |
getSignature() |
java.lang.String |
getSimpleName() |
Source |
getSource() |
java.lang.String |
getSourceFileName() |
int |
getStaticDataSize() |
StaticElementInfo |
getStaticElementInfo() |
FieldInfo |
getStaticField(int index)
Returns the information about a static field.
|
FieldInfo |
getStaticField(java.lang.String fName)
Search up the class hierarchy to find a static field
|
java.lang.String |
getStaticFieldName(int index)
Returns the name of a static field.
|
java.lang.Object |
getStaticFieldValueObject(java.lang.String id) |
Statics |
getStatics()
the container this is stored in
|
ClassInfo |
getSuperClass()
Return the super class.
|
ClassInfo |
getSuperClass(java.lang.String clsName)
return the ClassInfo for the provided superclass name.
|
java.lang.String |
getSuperClassName() |
java.lang.String |
getType()
Returns the type of a class.
|
long |
getUniqueId() |
boolean |
hasAnnotations() |
boolean |
hasCtors() |
int |
hashCode() |
boolean |
hasInnerClass(java.lang.String innerName) |
boolean |
hasInstanceFieldInfoAttr(java.lang.Class<?> type) |
boolean |
hasInstanceFields() |
boolean |
hasReleaseAction(ReleaseAction action) |
boolean |
initializeClass(ThreadInfo ti)
initialize this class and its superclasses (but not interfaces)
this will cause execution of clinits of not-yet-initialized classes in this hierarchy
note - we don't treat registration/initialization of a class as
a sharedness-changing operation since it is done automatically by
the VM and the triggering action in the SUT (e.g.
|
void |
initializeClassAtomic(ThreadInfo ti)
use this with care since it will throw a JPFException if we encounter a choice point
during execution of clinits
Use this mostly for wrapper exceptions and other system classes that are guaranteed to load
|
boolean |
isAbstract() |
boolean |
isArray() |
boolean |
isBoxClass()
<2do> that's stupid - we should use subclasses for builtin and box types
|
boolean |
isBuiltin() |
static boolean |
isBuiltinClass(java.lang.String cname) |
boolean |
isEnum() |
protected boolean |
isEnum0() |
boolean |
isInitialized()
note - this works recursively upwards since there might
be a superclass with a clinit that is still executing
|
boolean |
isInitializing() |
boolean |
isInnerClassOf(java.lang.String enclosingName) |
boolean |
isInstanceOf(ClassInfo ci)
Returns true if the given class is an instance of the class
or interface specified.
|
boolean |
isInstanceOf(java.lang.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() |
java.util.Iterator<MethodInfo> |
iterator() |
protected void |
linkFields() |
protected int |
linkFields(FieldInfo[] fields,
int idx,
int off) |
protected void |
loadAnnotationListeners() |
protected static java.lang.String[] |
loadArrayInterfaces() |
protected static java.lang.String[] |
loadBuiltinInterfaces(java.lang.String type) |
protected java.util.Set<ClassInfo> |
loadInterfaces(java.lang.String[] ifcNames) |
protected NativePeer |
loadNativePeer() |
protected Source |
loadSource() |
protected ClassInfo |
loadSuperClass(java.lang.String superName) |
static java.lang.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(ThreadInfo ti) |
protected void |
processJPFAnnotations(InfoObject infoObj) |
protected void |
processJPFAttrAnnotation(InfoObject infoObj) |
protected void |
processJPFConfigAnnotation() |
protected void |
processNoJPFExecutionAnnotation(InfoObject infoObj) |
void |
processReleaseActions(ElementInfo ei)
recursively process release actions registered for this type or any of
its super types (only classes).
|
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 |
resolveAndLink()
the initialization part that has to happen once we have super, fields, methods and annotations
NOTE - this has to be called by concrete ctors after parsing class files
|
protected void |
resolveClass()
loads superclass and direct interfaces, and computes information
that depends on them
|
ClassInfo |
resolveReferencedClass(java.lang.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() |
protected void |
setClass(java.lang.String clsName,
java.lang.String superClsName,
int flags,
int cpCount) |
protected void |
setDirectCallCode(MethodInfo miCallee,
MethodInfo miStub) |
void |
setElementInfoAttrs(int attrs) |
void |
setEnclosingClass(java.lang.String clsName) |
void |
setEnclosingMethod(java.lang.String mthName) |
void |
setFields(FieldInfo[] fields) |
void |
setGenericSignature(java.lang.String sig) |
void |
setInitialized() |
void |
setInitializing(ThreadInfo ti) |
void |
setInnerClassNames(java.lang.String[] clsNames) |
void |
setInterfaceNames(java.lang.String[] ifcNames) |
protected void |
setLambdaDirectCallCode(MethodInfo miDirectCall,
BootstrapMethodInfo bootstrapMethod) |
protected void |
setMethod(MethodInfo mi) |
void |
setMethods(MethodInfo[] newMethods) |
protected void |
setNativeCallCode(NativeMethodInfo miNative) |
protected void |
setRunStartCode(MethodInfo miStub,
MethodInfo miRun) |
void |
setSourceFile(java.lang.String fileName) |
java.lang.String |
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
public static final int UNINITIALIZED
public static final int INITIALIZED
protected static final java.lang.String ID_FIELD
protected static JPFLogger logger
protected static int nClassInfos
protected static Config config
protected static final java.lang.ClassLoader thisClassLoader
protected static FieldsFactory fieldsFactory
protected static final FieldInfo[] EMPTY_FIELDINFO_ARRAY
protected static final java.lang.String[] EMPTY_STRING_ARRAY
protected static final java.lang.String UNINITIALIZED_STRING
protected static final java.util.Map<java.lang.String,MethodInfo> NO_METHODS
protected static final java.util.Set<ClassInfo> NO_INTERFACES
protected static java.util.HashSet<java.lang.String> autoloadAnnotations
protected static java.util.HashSet<java.lang.String> autoloaded
protected java.lang.String name
protected java.lang.String signature
protected java.lang.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 int modifiers
protected MethodInfo finalizer
protected int elementInfoAttrs
protected java.util.Map<java.lang.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 java.lang.String superClassName
protected java.lang.String enclosingClassName
protected java.lang.String enclosingMethodName
protected java.lang.String[] innerClassNames
protected BootstrapMethodInfo[] bootstrapMethods
protected java.lang.String[] interfaceNames
protected java.util.Set<ClassInfo> interfaces
protected java.util.Set<ClassInfo> allInterfaces
protected java.lang.String packageName
protected java.lang.String sourceFileName
protected java.lang.String classFileUrl
protected ClassFileContainer container
protected int id
protected long uniqueId
protected NativePeer nativePeer
protected Source source
protected boolean enableAssertions
protected ImmutableList<ReleaseAction> releaseActions
protected ClassInfo(java.lang.String name, ClassLoaderInfo cli, java.lang.String classFileUrl)
protected ClassInfo()
protected ClassInfo(java.lang.String builtinClassName, ClassLoaderInfo classLoader)
protected ClassInfo(ClassInfo annotationCls, java.lang.String name, ClassLoaderInfo classLoader, java.lang.String url)
protected ClassInfo(ClassInfo funcInterface, BootstrapMethodInfo bootstrapMethod, java.lang.String name, java.lang.String[] fieldTypesName)
public static boolean isObjectClassInfo(ClassInfo ci)
public static boolean isStringClassInfo(ClassInfo ci)
protected void setClass(java.lang.String clsName, java.lang.String superClsName, int flags, int cpCount) throws ClassParseException
ClassParseException
public void setInnerClassNames(java.lang.String[] clsNames)
public void setEnclosingClass(java.lang.String clsName)
public void setEnclosingMethod(java.lang.String mthName)
public void setInterfaceNames(java.lang.String[] ifcNames)
public void setSourceFile(java.lang.String fileName)
public void setFields(FieldInfo[] fields)
protected void setMethod(MethodInfo mi)
public void setMethods(MethodInfo[] newMethods)
protected void processJPFAttrAnnotation(InfoObject infoObj)
protected void processNoJPFExecutionAnnotation(InfoObject infoObj)
protected void processJPFAnnotations(InfoObject infoObj)
public AnnotationInfo getResolvedAnnotationInfo(java.lang.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(java.lang.String annotationName)
getAnnotation
in class InfoObject
protected void resolveAndLink() throws ClassParseException
ClassParseException
public static int getNumberOfLoadedClasses()
protected void setAnnotationValueGetterCode(MethodInfo pmi, FieldInfo fi)
protected void setDirectCallCode(MethodInfo miCallee, MethodInfo miStub)
protected void setLambdaDirectCallCode(MethodInfo miDirectCall, BootstrapMethodInfo bootstrapMethod)
protected void setNativeCallCode(NativeMethodInfo miNative)
protected void setRunStartCode(MethodInfo miStub, MethodInfo miRun)
protected ClassInfo createFuncObjClassInfo(BootstrapMethodInfo bootstrapMethod, java.lang.String name, java.lang.String samUniqueName, java.lang.String[] fieldTypesName)
public int hashCode()
hashCode
in class java.lang.Object
public boolean equals(java.lang.Object o)
equals
in class java.lang.Object
protected java.lang.String computeSourceFileName()
protected void checkUnresolvedNativeMethods()
protected void processJPFConfigAnnotation()
protected void loadAnnotationListeners()
protected NativePeer loadNativePeer()
public ClassLoaderInfo getClassLoaderInfo()
public Statics getStatics()
public ClassInfo getClassInfo()
protected void setAssertionStatus()
public boolean desiredAssertionStatus()
public java.lang.String getGenericSignature()
getGenericSignature
in interface GenericSignatureHolder
public void setGenericSignature(java.lang.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()
protected ClassInfo createAnnotationProxy(java.lang.String proxyName)
public ClassInfo getAnnotationProxy()
public boolean areAssertionsEnabled()
public boolean hasInstanceFields()
public ElementInfo getClassObject()
public ElementInfo getModifiableClassObject()
public int getClassObjectRef()
public ClassFileContainer getContainer()
public java.lang.String getClassFileUrl()
public boolean hasReleaseAction(ReleaseAction action)
public void addReleaseAction(ReleaseAction action)
public void processReleaseActions(ElementInfo ei)
public int getModifiers()
public MethodInfo getMethod(java.lang.String uniqueName, boolean isRecursiveLookup)
public MethodInfo getMethod(java.lang.String name, java.lang.String signature, boolean isRecursiveLookup)
public MethodInfo getDefaultMethod(java.lang.String uniqueName)
public MethodInfo getInterfaceAbstractMethod()
public MethodInfo getReflectionMethod(java.lang.String fullName, boolean isRecursiveLookup)
public void matchMethods(MethodLocator loc)
public void matchDeclaredMethods(MethodLocator loc)
public java.util.Iterator<MethodInfo> iterator()
iterator
in interface java.lang.Iterable<MethodInfo>
public java.util.Iterator<MethodInfo> declaredMethodIterator()
public FieldInfo getStaticField(java.lang.String fName)
fName
- name of fieldpublic java.lang.Object getStaticFieldValueObject(java.lang.String id)
public FieldInfo[] getDeclaredStaticFields()
public FieldInfo[] getDeclaredInstanceFields()
public FieldInfo getDeclaredStaticField(java.lang.String fName)
public FieldInfo getInstanceField(java.lang.String fName)
fName
- the field namepublic FieldInfo getDeclaredInstanceField(java.lang.String fName)
public java.lang.String getSignature()
public java.lang.String getName()
public java.lang.String getSimpleName()
public java.lang.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 java.lang.String getSourceFileName()
public FieldInfo getStaticField(int index)
public java.lang.String getStaticFieldName(int index)
public boolean isStaticMethodAbstractionDeterministic(ThreadInfo th, MethodInfo mi)
public java.lang.String getSuperClassName()
public ClassInfo getSuperClass()
public ClassInfo getSuperClass(java.lang.String clsName)
public int getNumberOfSuperClasses()
public java.lang.String getEnclosingClassName()
public ClassInfo getEnclosingClassInfo()
public java.lang.String getEnclosingMethodName()
public MethodInfo getEnclosingMethodInfo()
public boolean isSystemClass()
public boolean isBoxClass()
public java.lang.String getType()
public boolean isWeakReference()
public boolean isReferenceClassInfo()
public boolean isPrimitive()
public boolean hasInstanceFieldInfoAttr(java.lang.Class<?> type)
public NativePeer getNativePeer()
public boolean isInstanceOf(java.lang.String cname)
public boolean isInstanceOf(ClassInfo ci)
public boolean isInnerClassOf(java.lang.String enclosingName)
public boolean hasInnerClass(java.lang.String innerName)
public static java.lang.String makeModelClassPath(Config config)
protected static java.lang.String[] loadArrayInterfaces()
protected static java.lang.String[] loadBuiltinInterfaces(java.lang.String type)
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 static boolean isBuiltinClass(java.lang.String cname)
public java.util.Set<ClassInfo> getAllInterfaces()
public java.lang.String[] getDirectInterfaceNames()
public java.util.Set<ClassInfo> getInterfaceClassInfos()
public java.util.Set<ClassInfo> getAllInterfaceClassInfos()
public java.lang.String[] getInnerClasses()
public ClassInfo[] getInnerClassInfos()
public BootstrapMethodInfo getBootstrapMethodInfo(int index)
public ClassInfo getComponentClassInfo()
protected java.util.Map<java.lang.String,MethodInfo> getDeclaredMethods()
public MethodInfo putDeclaredMethod(MethodInfo mi)
public MethodInfo[] getDeclaredMethodInfos()
public Instruction[] getMatchingInstructions(LocationSpec lspec)
public java.util.List<MethodInfo> getMatchingMethodInfos(MethodSpec mspec)
public MethodInfo getFinalizer()
public MethodInfo getClinit()
public boolean hasCtors()
public static ClassInfo getInitializedSystemClassInfo(java.lang.String clsName, ThreadInfo ti)
public static ClassInfo getInitializedClassInfo(java.lang.String clsName, ThreadInfo ti)
public boolean isRegistered()
public StaticElementInfo registerClass(ThreadInfo ti)
public boolean isInitializing()
public boolean isInitialized()
public boolean isResolved()
public boolean needsInitialization(ThreadInfo ti)
public void setInitializing(ThreadInfo ti)
public boolean initializeClass(ThreadInfo ti)
public void initializeClassAtomic(ThreadInfo ti)
public void setInitialized()
public StaticElementInfo getStaticElementInfo()
public StaticElementInfo getModifiableStaticElementInfo()
public Fields createInstanceFields()
protected ClassInfo loadSuperClass(java.lang.String superName) throws ClassInfoException
ClassInfoException
protected java.util.Set<ClassInfo> loadInterfaces(java.lang.String[] ifcNames) throws ClassInfoException
ClassInfoException
protected void resolveClass()
public ClassInfo resolveReferencedClass(java.lang.String cname)
protected int linkFields(FieldInfo[] fields, int idx, int off)
protected void linkFields()
protected void checkInheritedAnnotations()
public java.lang.String toString()
toString
in class java.lang.Object
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)