public class ClassFileLazyClassInitializer extends java.lang.Object implements LazyClassInitializer
Modifier and Type | Field and Description |
---|---|
protected ClassFile |
clazz |
protected boolean |
constructorsInitialized |
protected ParsedClassType |
ct |
protected boolean |
fieldsInitialized |
protected boolean |
init |
protected boolean |
interfacesInitialized |
protected boolean |
memberClassesInitialized |
protected boolean |
methodsInitialized |
protected boolean |
superclassInitialized |
protected TypeSystem |
ts |
protected static java.util.Collection<java.lang.String> |
verbose |
Constructor and Description |
---|
ClassFileLazyClassInitializer(ClassFile file,
TypeSystem ts) |
Modifier and Type | Method and Description |
---|---|
protected Type |
arrayOf(Type t,
int dims)
Return an array type.
|
void |
canonicalConstructors()
Initialize
ct 's constructors. |
void |
canonicalFields()
Initialize
ct 's fields. |
void |
canonicalMethods()
Initialize
ct 's methods. |
protected ConstructorInstance |
constructorInstance(Method method,
ClassType ct,
Field[] fields)
Create a ConstructorInstance.
|
protected ParsedClassType |
createType()
Create the type for this class file.
|
protected FieldInstance |
fieldInstance(Field field,
ClassType ct)
Create a FieldInstance.
|
boolean |
fromClassFile()
Return true if the class is from a class file.
|
void |
initConstructors()
Initialize
ct 's constructors. |
void |
initFields()
Initialize
ct 's fields. |
protected boolean |
initialized() |
void |
initInterfaces()
Initialize
ct 's interfaces. |
void |
initMemberClasses()
Initialize
ct 's member classes. |
void |
initMethods()
Initialize
ct 's methods. |
void |
initSuperclass()
Initialize
ct 's superclass. |
void |
initTypeObject()
Initialize the type object.
|
boolean |
isTypeObjectInitialized()
Return true if initTypeObject has been called.
|
protected MethodInstance |
methodInstance(Method method,
ClassType ct)
Create a MethodInstance.
|
Position |
position()
Create a position for the class file.
|
protected ClassType |
quietTypeForName(java.lang.String name)
Looks up a class by name, assuming the class exists.
|
void |
setClass(ParsedClassType ct)
Set the class type we're initializing.
|
ParsedClassType |
type()
Create the type for this class file.
|
protected ClassType |
typeForName(java.lang.String name)
Looks up a class by name.
|
Type |
typeForString(java.lang.String str)
Return a type based on a JVM type descriptor string.
|
protected java.util.List<Type> |
typeListForString(java.lang.String str)
Return a list of types based on a JVM type descriptor string.
|
protected ClassFile clazz
protected TypeSystem ts
protected ParsedClassType ct
protected boolean init
protected boolean constructorsInitialized
protected boolean fieldsInitialized
protected boolean interfacesInitialized
protected boolean memberClassesInitialized
protected boolean methodsInitialized
protected boolean superclassInitialized
protected static java.util.Collection<java.lang.String> verbose
public ClassFileLazyClassInitializer(ClassFile file, TypeSystem ts)
public void setClass(ParsedClassType ct)
LazyClassInitializer
setClass
in interface LazyClassInitializer
public boolean fromClassFile()
LazyClassInitializer
fromClassFile
in interface LazyClassInitializer
public Position position()
protected ParsedClassType createType() throws SemanticException
SemanticException
public ParsedClassType type() throws SemanticException
SemanticException
protected Type arrayOf(Type t, int dims)
t
- The array base type.dims
- The number of dimensions of the array.protected java.util.List<Type> typeListForString(java.lang.String str)
str
- The type descriptor.public Type typeForString(java.lang.String str)
str
- The type descriptor.protected ClassType quietTypeForName(java.lang.String name)
name
- Name of the class to find.InternalCompilerError
- if the class does not exist.protected ClassType typeForName(java.lang.String name) throws SemanticException
name
- Name of the class to find.SemanticException
- if the class does not exist.public void initTypeObject()
LazyInitializer
initTypeObject
in interface LazyInitializer
public boolean isTypeObjectInitialized()
LazyInitializer
isTypeObjectInitialized
in interface LazyInitializer
public void initSuperclass()
LazyClassInitializer
ct
's superclass.
This method ensures the superclass of the class is initialized to a
canonical type, or throws a MissingDependencyException
.initSuperclass
in interface LazyClassInitializer
public void initInterfaces()
LazyClassInitializer
ct
's interfaces.
This method ensures the interfaces of the class are initialized to
canonical types, or throws a MissingDependencyException
.initInterfaces
in interface LazyClassInitializer
public void initMemberClasses()
LazyClassInitializer
ct
's member classes.
This method ensures the member classes of the class are initialized to
canonical types, or throws a MissingDependencyException
.initMemberClasses
in interface LazyClassInitializer
public void canonicalFields()
LazyClassInitializer
ct
's fields.
This method ensures the list of fields is populated with
canonical FieldInstances, or throws a MissingDependencyException
.canonicalFields
in interface LazyClassInitializer
public void canonicalMethods()
LazyClassInitializer
ct
's methods.
This method ensures the list of methods is populated with
canonical MethodInstances, or throws a MissingDependencyException
.canonicalMethods
in interface LazyClassInitializer
public void canonicalConstructors()
LazyClassInitializer
ct
's constructors.
This method ensures the list of constructors is populated with
canonical ConstructorInstances, or throws a MissingDependencyException
.canonicalConstructors
in interface LazyClassInitializer
public void initFields()
LazyClassInitializer
ct
's fields.
This method ensures the list of fields is populated with (possibly
non-canonical) FieldInstances, or throws a MissingDependencyException
.initFields
in interface LazyClassInitializer
public void initMethods()
LazyClassInitializer
ct
's methods.
This method ensures the list of fields is populated with (possibly
non-canonical) MethodInstances, or throws a MissingDependencyException
.initMethods
in interface LazyClassInitializer
public void initConstructors()
LazyClassInitializer
ct
's constructors.
This method ensures the list of fields is populated with (possibly
non-canonical) ConstructorInstances, or throws a MissingDependencyException
.initConstructors
in interface LazyClassInitializer
protected boolean initialized()
protected MethodInstance methodInstance(Method method, ClassType ct)
method
- The JVM Method data structure.ct
- The class containing the method.protected ConstructorInstance constructorInstance(Method method, ClassType ct, Field[] fields)
method
- The JVM Method data structure for the constructor.ct
- The class containing the method.fields
- The constructor's fields, needed to remove parameters
passed to initialize synthetic fields.protected FieldInstance fieldInstance(Field field, ClassType ct)
field
- The JVM Field data structure for the field.ct
- The class containing the field.