Package gw.internal.gosu.compiler
Class GosuClassLoader
- java.lang.Object
-
- gw.internal.gosu.compiler.GosuClassLoader
-
- All Implemented Interfaces:
IGosuClassLoader
public class GosuClassLoader extends java.lang.Object implements IGosuClassLoader
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private classGosuClassLoader.DiscreteLoaderCache
-
Field Summary
Fields Modifier and Type Field Description private GosuClassLoader.DiscreteLoaderCache_discreteLoadersprivate java.lang.ClassLoader_loader
-
Constructor Summary
Constructors Constructor Description GosuClassLoader(java.lang.ClassLoader parent)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description voidassignParent(java.lang.ClassLoader parent)private static byte[]compileClass(ICompilableType type, boolean debug)private java.lang.ClassdefineAndMaybeVerify(ICompilableTypeInternal gsClass)java.lang.ClassdefineClass(ICompilableTypeInternal gsClass, boolean useSingleServingLoader)java.lang.ClassdefineClass(java.lang.String name, byte[] bytes)private java.lang.ClassdefineClassInLoader(ICompilableTypeInternal gsClass, boolean forceSingleServingLoader)private java.lang.Class<?>defineClassInSingleServingLoader(ICompilableTypeInternal gsClass, SingleServingGosuClassLoader loader)voiddumpAllClasses()voidevictLoader(java.lang.String packageName)java.lang.Class<?>findClass(java.lang.String strName)private java.lang.ClassfindOrDefineClass(ICompilableTypeInternal gsClass)java.lang.ClassLoadergetActualLoader()byte[]getBytes(ICompilableType gsClass)private java.lang.ClassLoadergetClassLoader(ICompilableTypeInternal enclosingType)(package private) DiscreteClassLoadergetDiscreteNamespaceLoader(java.lang.String namespace)IJavaTypegetFunctionClassForArity(boolean hasReturn, int length)java.lang.ClassLoadergetLoader()private SingleServingGosuClassLoadergetOrCreateSingleServingLoader(ICompilableTypeInternal gsClass)(package private) booleanhasDiscreteNamespace(java.lang.String namespace)private voidinit()static GosuClassLoaderinstance()private booleanisEnclosingTypeInSingleServingLoader(ICompilableTypeInternal gsClass)booleanisLoaderUnloaded(java.lang.String namespace)private booleanisOldStyleGosuAnnotationExpression(ICompilableTypeInternal gsClass)private booleanisThrowawayProgram(ICompilableType gsClass)java.lang.ClassloadClass(java.lang.String strName)(package private) booleanshouldDebugClass(ICompilableType gsClass)private booleanshouldUseSingleServingLoader(ICompilableTypeInternal gsClass)booleanwaitForLoaderToUnload(java.lang.String packageName, long millisToWait)
-
-
-
Field Detail
-
_discreteLoaders
private GosuClassLoader.DiscreteLoaderCache _discreteLoaders
-
_loader
private java.lang.ClassLoader _loader
-
-
Method Detail
-
instance
public static GosuClassLoader instance()
-
dumpAllClasses
public void dumpAllClasses()
- Specified by:
dumpAllClassesin interfaceIGosuClassLoader
-
getBytes
public byte[] getBytes(ICompilableType gsClass)
- Specified by:
getBytesin interfaceIGosuClassLoader
-
assignParent
public void assignParent(java.lang.ClassLoader parent)
- Specified by:
assignParentin interfaceIGosuClassLoader
-
init
private void init()
-
getLoader
public java.lang.ClassLoader getLoader()
-
loadClass
public java.lang.Class loadClass(java.lang.String strName) throws java.lang.ClassNotFoundException- Specified by:
loadClassin interfaceIGosuClassLoader- Throws:
java.lang.ClassNotFoundException
-
findClass
public java.lang.Class<?> findClass(java.lang.String strName) throws java.lang.ClassNotFoundException- Specified by:
findClassin interfaceIGosuClassLoader- Throws:
java.lang.ClassNotFoundException
-
getFunctionClassForArity
public IJavaType getFunctionClassForArity(boolean hasReturn, int length)
- Specified by:
getFunctionClassForArityin interfaceIGosuClassLoader
-
defineClass
public java.lang.Class defineClass(ICompilableTypeInternal gsClass, boolean useSingleServingLoader) throws java.lang.ClassNotFoundException
- Throws:
java.lang.ClassNotFoundException
-
hasDiscreteNamespace
boolean hasDiscreteNamespace(java.lang.String namespace)
-
getDiscreteNamespaceLoader
DiscreteClassLoader getDiscreteNamespaceLoader(java.lang.String namespace)
-
isLoaderUnloaded
public boolean isLoaderUnloaded(java.lang.String namespace)
-
isEnclosingTypeInSingleServingLoader
private boolean isEnclosingTypeInSingleServingLoader(ICompilableTypeInternal gsClass)
-
findOrDefineClass
private java.lang.Class findOrDefineClass(ICompilableTypeInternal gsClass) throws java.lang.ClassNotFoundException
- Throws:
java.lang.ClassNotFoundException
-
defineClassInLoader
private java.lang.Class defineClassInLoader(ICompilableTypeInternal gsClass, boolean forceSingleServingLoader)
-
getOrCreateSingleServingLoader
private SingleServingGosuClassLoader getOrCreateSingleServingLoader(ICompilableTypeInternal gsClass)
-
isOldStyleGosuAnnotationExpression
private boolean isOldStyleGosuAnnotationExpression(ICompilableTypeInternal gsClass)
-
getClassLoader
private java.lang.ClassLoader getClassLoader(ICompilableTypeInternal enclosingType)
-
defineClassInSingleServingLoader
private java.lang.Class<?> defineClassInSingleServingLoader(ICompilableTypeInternal gsClass, SingleServingGosuClassLoader loader)
-
shouldUseSingleServingLoader
private boolean shouldUseSingleServingLoader(ICompilableTypeInternal gsClass)
-
shouldDebugClass
boolean shouldDebugClass(ICompilableType gsClass)
-
defineAndMaybeVerify
private java.lang.Class defineAndMaybeVerify(ICompilableTypeInternal gsClass)
-
compileClass
private static byte[] compileClass(ICompilableType type, boolean debug)
-
isThrowawayProgram
private boolean isThrowawayProgram(ICompilableType gsClass)
-
getActualLoader
public java.lang.ClassLoader getActualLoader()
- Specified by:
getActualLoaderin interfaceIGosuClassLoader
-
defineClass
public java.lang.Class defineClass(java.lang.String name, byte[] bytes)- Specified by:
defineClassin interfaceIGosuClassLoader
-
waitForLoaderToUnload
public boolean waitForLoaderToUnload(java.lang.String packageName, long millisToWait)- Specified by:
waitForLoaderToUnloadin interfaceIGosuClassLoader
-
evictLoader
public void evictLoader(java.lang.String packageName)
- Specified by:
evictLoaderin interfaceIGosuClassLoader
-
-