Class ClassLoaderImpl
java.lang.Object
com.ibm.wala.classLoader.ClassLoaderImpl
- All Implemented Interfaces:
IClassLoader
- Direct Known Subclasses:
JavaSourceLoaderImpl
,WDexClassLoaderImpl
A class loader that reads class definitions from a set of Modules.
-
Field Summary
Modifier and TypeFieldDescriptionprotected final IClassHierarchy
Governing class hierarchystatic final int
A mapping from class name (TypeName) to IClass -
Constructor Summary
ConstructorDescriptionClassLoaderImpl
(ClassLoaderReference loader, ArrayClassLoader arrayClassLoader, IClassLoader parent, SetOfClasses exclusions, IClassHierarchy cha) -
Method Summary
Modifier and TypeMethodDescriptiongetName()
int
int
Method getParent.Return the ClassLoaderReference for this class loader.getSourceFileName
(IClass klass) getSourceFileName
(IMethod method, int offset) void
Initialize internal data structuresprotected void
loadAllSources
(Set<ModuleEntry> sourceModules) Set up mapping from type name to Module EntrylookupClass
(TypeName className) Find and return the IClass defined by this class loader that corresponds to the given class name.void
removeAll
(Collection<IClass> toRemove) blow away references to any classes in the settoString()
-
Field Details
-
DEBUG_LEVEL
public static final int DEBUG_LEVEL- See Also:
-
loadedClasses
-
cha
Governing class hierarchy
-
-
Constructor Details
-
ClassLoaderImpl
public ClassLoaderImpl(ClassLoaderReference loader, ArrayClassLoader arrayClassLoader, IClassLoader parent, SetOfClasses exclusions, IClassHierarchy cha) - Parameters:
loader
- class loader reference identifying this loaderparent
- parent loader for delegationexclusions
- set of classes to exclude from loading
-
-
Method Details
-
loadAllSources
Set up mapping from type name to Module Entry -
init
Initialize internal data structures- Specified by:
init
in interfaceIClassLoader
- Throws:
IllegalArgumentException
- if modules is nullIOException
-
getReference
Description copied from interface:IClassLoader
Return the ClassLoaderReference for this class loader.- Specified by:
getReference
in interfaceIClassLoader
- Returns:
- ClassLoaderReference
-
iterateAllClasses
- Specified by:
iterateAllClasses
in interfaceIClassLoader
- Returns:
- an Iterator of all classes loaded by this loader
-
lookupClass
Description copied from interface:IClassLoader
Find and return the IClass defined by this class loader that corresponds to the given class name.- Specified by:
lookupClass
in interfaceIClassLoader
- Parameters:
className
- name of the class- Returns:
- the IClass defined by this class loader that corresponds to the given class name, or null if not found.
-
getParent
Method getParent.- Specified by:
getParent
in interfaceIClassLoader
- Returns:
- the parent IClassLoader, if any, or null
-
getName
- Specified by:
getName
in interfaceIClassLoader
- Returns:
- the unique name that identifies this class loader.
-
getLanguage
- Specified by:
getLanguage
in interfaceIClassLoader
- Returns:
- the unique name that identifies the programming language from which this class loader loads code.
-
toString
-
getNumberOfClasses
public int getNumberOfClasses()- Specified by:
getNumberOfClasses
in interfaceIClassLoader
- Returns:
- the number of classes in scope to be loaded by this loader
-
getNumberOfMethods
public int getNumberOfMethods()- Specified by:
getNumberOfMethods
in interfaceIClassLoader
-
getSourceFileName
- Specified by:
getSourceFileName
in interfaceIClassLoader
- Parameters:
klass
- the class for which information is desired.- Returns:
- name of source file corresponding to the class, or null if not available
-
getSource
- Specified by:
getSource
in interfaceIClassLoader
- Parameters:
method
- The method for which information is desiredoffset
- an offset into the bytecode of the given method.- Returns:
- input stream representing the source file for a given bytecode index of a given method, or null if not available
-
getSourceFileName
- Specified by:
getSourceFileName
in interfaceIClassLoader
- Parameters:
method
- The method for which information is desiredoffset
- an offset into the bytecode of the given method.- Returns:
- name of the source file corresponding to the given offset in the given method. Note that this api allows a single method to arise from multiple source files, which is deliberate as it can happen in some languages.
-
getSource
- Specified by:
getSource
in interfaceIClassLoader
- Returns:
- input stream representing the source file for a class, or null if not available
-
removeAll
Description copied from interface:IClassLoader
blow away references to any classes in the set- Specified by:
removeAll
in interfaceIClassLoader
- Parameters:
toRemove
- Collection<IClass>
-
getInstructionFactory
- Specified by:
getInstructionFactory
in interfaceIClassLoader
-