org.multijava.relaxed.runtime
Class RMJClassLoader
java.lang.Object
java.lang.ClassLoader
org.multijava.relaxed.runtime.RMJClassLoader
- All Implemented Interfaces:
- Constants, Constants
- Direct Known Subclasses:
- RMJPreloader
- public class RMJClassLoader
- extends ClassLoader
- implements Constants
| Nested classes inherited from class java.lang.ClassLoader |
|
| Fields inherited from interface org.multijava.mjc.Constants |
ACC_MODIFIER_FLAGS_MASK, ACC_NON_NULL, ACC_NON_NULL_BY_DEFAULT, ACC_NULLABLE, ACC_NULLABLE_BY_DEFAULT, ACC_PURE, ACCESS_FLAG_ARRAY, ACCESS_FLAG_NAMES, AMID_JAVA_MATH, AMID_MAX, AMID_SAFE_MATH, CMP_VERSION, IMPLICITLY_NON_NULL, JAV_ASSERTION_ERROR, JAV_CLASS, JAV_CLASSLOADER, JAV_CLASSNOTFOUND_EXCEPTION, JAV_CLONE, JAV_CLONEABLE, JAV_CONSTRUCTOR, JAV_ERROR, JAV_EXCEPTION, JAV_INIT, JAV_LENGTH, JAV_NAME_SEPARATOR, JAV_NOCLASSDEFFOUND_ERROR, JAV_OBJECT, JAV_OUTER_THIS, JAV_RMJ_RUNTIME_EXCEPTION, JAV_RUNTIME, JAV_RUNTIME_EXCEPTION, JAV_SERIALIZABLE, JAV_STATIC_INIT, JAV_STRING, JAV_STRINGBUFFER, JAV_SUPER, JAV_THIS, JAV_THROWABLE, MJ_ANCHOR, NULLITY_MODS, OPE_BAND, OPE_BNOT, OPE_BOR, OPE_BSR, OPE_BXOR, OPE_EQ, OPE_GE, OPE_GT, OPE_LAND, OPE_LE, OPE_LNOT, OPE_LOR, OPE_LT, OPE_MINUS, OPE_NE, OPE_PERCENT, OPE_PLUS, OPE_POSTDEC, OPE_POSTINC, OPE_PREDEC, OPE_PREINC, OPE_SIMPLE, OPE_SL, OPE_SLASH, OPE_SR, OPE_STAR, TID_ARRAY, TID_BOOLEAN, TID_BYTE, TID_CHAR, TID_CLASS, TID_DOUBLE, TID_FLOAT, TID_INT, TID_LONG, TID_MAX, TID_SHORT, TID_VOID, UNIV_ARRAY_TMP, UNIV_TMP |
| Fields inherited from interface org.multijava.util.classfile.Constants |
ACC_ABSTRACT, ACC_FINAL, ACC_INTERFACE, ACC_NATIVE, ACC_PRIVATE, ACC_PROTECTED, ACC_PUBLIC, ACC_STATIC, ACC_STRICT, ACC_SUPER, ACC_SYNCHRONIZED, ACC_SYNTHETIC, ACC_TRANSIENT, ACC_VOLATILE, ATT_ANCHOR, ATT_BRIDGE, ATT_CODE, ATT_CONSTANTVALUE, ATT_DEPRECATED, ATT_DISPATCHER, ATT_EXCEPTIONS, ATT_GENERIC, ATT_GENERIC_FUNCTIONS, ATT_INNERCLASSES, ATT_LINENUMBERTABLE, ATT_LOCALVARIABLETABLE, ATT_MM_BODY, ATT_REDIRECTOR, ATT_RMJ_GLUE, ATT_RMJ_SIGNATURE, ATT_RUNTIME_VISIBLE_ANNOTATIONS, ATT_RUNTIME_VISIBLE_PARAMETER_ANNOTATIONS, ATT_SIGNATURE, ATT_SOURCEFILE, ATT_SYNTHETIC, ATT_UNIVERSE_FIELD, ATT_UNIVERSE_METHOD, ATT_UNIVERSE_VERSION, CST_CLASS, CST_DOUBLE, CST_FIELD, CST_FLOAT, CST_INTEGER, CST_INTERFACEMETHOD, CST_LONG, CST_METHOD, CST_NAMEANDTYPE, CST_STRING, CST_UTF8, ENV_DEBUG_MODE, ENV_USE_CACHE, JAVA_MAGIC, JAVA_MAJOR, JAVA_MINOR, MAX_CODE_PER_METHOD, opc_aaload, opc_aastore, opc_aconst_null, opc_aload, opc_aload_0, opc_aload_1, opc_aload_2, opc_aload_3, opc_anewarray, opc_areturn, opc_arraylength, opc_astore, opc_astore_0, opc_astore_1, opc_astore_2, opc_astore_3, opc_athrow, opc_baload, opc_bastore, opc_bipush, opc_caload, opc_castore, opc_checkcast, opc_d2f, opc_d2i, opc_d2l, opc_dadd, opc_daload, opc_dastore, opc_dcmpg, opc_dcmpl, opc_dconst_0, opc_dconst_1, opc_ddiv, opc_dload, opc_dload_0, opc_dload_1, opc_dload_2, opc_dload_3, opc_dmul, opc_dneg, opc_drem, opc_dreturn, opc_dstore, opc_dstore_0, opc_dstore_1, opc_dstore_2, opc_dstore_3, opc_dsub, opc_dup, opc_dup2, opc_dup2_x1, opc_dup2_x2, opc_dup_x1, opc_dup_x2, opc_f2d, opc_f2i, opc_f2l, opc_fadd, opc_faload, opc_fastore, opc_fcmpg, opc_fcmpl, opc_fconst_0, opc_fconst_1, opc_fconst_2, opc_fdiv, opc_fload, opc_fload_0, opc_fload_1, opc_fload_2, opc_fload_3, opc_fmul, opc_fneg, opc_frem, opc_freturn, opc_fstore, opc_fstore_0, opc_fstore_1, opc_fstore_2, opc_fstore_3, opc_fsub, opc_getfield, opc_getstatic, opc_goto, opc_goto_w, opc_i2b, opc_i2c, opc_i2d, opc_i2f, opc_i2l, opc_i2s, opc_iadd, opc_iaload, opc_iand, opc_iastore, opc_iconst_0, opc_iconst_1, opc_iconst_2, opc_iconst_3, opc_iconst_4, opc_iconst_5, opc_iconst_m1, opc_idiv, opc_if_acmpeq, opc_if_acmpne, opc_if_icmpeq, opc_if_icmpge, opc_if_icmpgt, opc_if_icmple, opc_if_icmplt, opc_if_icmpne, opc_ifeq, opc_ifge, opc_ifgt, opc_ifle, opc_iflt, opc_ifne, opc_ifnonnull, opc_ifnull, opc_iinc, opc_iload, opc_iload_0, opc_iload_1, opc_iload_2, opc_iload_3, opc_imul, opc_ineg, opc_instanceof, opc_invokeinterface, opc_invokespecial, opc_invokestatic, opc_invokevirtual, opc_ior, opc_irem, opc_ireturn, opc_ishl, opc_ishr, opc_istore, opc_istore_0, opc_istore_1, opc_istore_2, opc_istore_3, opc_isub, opc_iushr, opc_ixor, opc_jsr, opc_jsr_w, opc_l2d, opc_l2f, opc_l2i, opc_ladd, opc_laload, opc_land, opc_lastore, opc_lcmp, opc_lconst_0, opc_lconst_1, opc_ldc, opc_ldc2_w, opc_ldc_w, opc_ldiv, opc_lload, opc_lload_0, opc_lload_1, opc_lload_2, opc_lload_3, opc_lmul, opc_lneg, opc_lookupswitch, opc_lor, opc_lrem, opc_lreturn, opc_lshl, opc_lshr, opc_lstore, opc_lstore_0, opc_lstore_1, opc_lstore_2, opc_lstore_3, opc_lsub, opc_lushr, opc_lxor, opc_monitorenter, opc_monitorexit, opc_multianewarray, opc_new, opc_newarray, opc_nop, opc_pop, opc_pop2, opc_putfield, opc_putstatic, opc_ret, opc_return, opc_saload, opc_sastore, opc_sipush, opc_swap, opc_tableswitch, opc_wide, opc_xxxunusedxxx, POO_ASCII_CONSTANT, POO_CLASS_CONSTANT, POO_DOUBLE_CONSTANT, POO_FLOAT_CONSTANT, POO_INTEGER_CONSTANT, POO_LONG_CONSTANT, POO_NAT_CONSTANT, POO_REF_CONSTANT, POO_STRING_CONSTANT, TYP_ADDRESS, TYP_DOUBLE, TYP_FLOAT, TYP_INT, TYP_LONG, TYP_REFERENCE, TYP_VOID |
|
Method Summary |
protected boolean |
checkCollectionForResolvingSig(Collection sigs,
RMJOperation op,
Object[] intersection,
RMJSignature nsig,
RMJSignature osig)
|
protected boolean |
checkForResolvingSig(Object[] intersection,
boolean isOld,
RMJSignature nsig,
RMJSignature osig)
|
protected void |
collectAbstractSignaturesAbove(Class cls,
HashSet asigs)
|
protected void |
collectAbstractSignaturesOf(Class cls,
HashSet asigs)
|
(package private) Collection |
computeIntersection(Class cls1,
Class cls2)
|
protected List |
generateCrossProduct(List[] tupleOfSets)
|
protected List |
generateCrossProductTo(List[] tupleOfSets,
int pos)
|
protected List |
generateTopConcreteSetsBelow(Object specializer)
|
protected List |
generateTopConcreteTuplesBelow(RMJSignature asig)
|
protected List[] |
generateTupleOfTopConcreteSetsBelow(RMJSignature asig)
|
protected boolean |
isAbstractClass(Class cls)
|
protected boolean |
isAbstractClassOrInterface(Class cls)
|
protected boolean |
isConcreteClass(Class cls)
|
protected boolean |
isInterface(Class cls)
|
(package private) boolean |
isLoaded(String className)
|
protected boolean |
isTopConcreteClass(Class cls)
|
Class |
loadClass(String name)
|
protected void |
loadDispatcherClass(RMJSignature sig)
|
void |
loaderMain(String[] args)
|
protected void |
loadErrorSig(RMJErrorSignature esig)
|
protected Class |
loadSystemClass(String name)
|
protected Class |
loadUserClass(String name)
|
(package private) Class |
lookupClass(String className)
|
static void |
main(String[] args)
|
protected String |
prettyString(Object[] tuple)
|
String |
prettyString(RMJSignature sig)
|
String |
prettyString(RMJAnnotation.Method sig)
|
void |
printClassReport(PrintStream strm)
|
protected void |
processLoadedClass(Class cls,
RMJAnnotation anno)
|
protected byte[] |
readAll(InputStream strm)
|
byte[] |
readClassByteCode(String name)
|
protected RMJAnnotation |
readGlueAnchorAnnotations(String glueAnchorClassName)
|
protected void |
registerAbstractSignature(RMJSignature asig)
|
protected void |
registerAllGlue()
|
protected void |
registerClass(Class cls,
RMJAnnotation anno)
|
protected void |
registerConcreteSig(RMJSignature csig,
RMJSignature asig)
|
protected void |
registerGlueAnchor(String glueAnchorClassName)
|
protected void |
registerGlueSignature(RMJAnnotation.Method anno)
|
protected void |
registerNonAmbiguousSig(RMJSignature sig,
Map loadedSigsMap)
|
protected void |
registerReachableSignature(RMJAnnotation.Method anno)
|
protected void |
registerSignature(RMJAnnotation.Method anno)
|
protected void |
registerSystemLoad(Class cls)
|
protected void |
registerSystemLoadAncestors(Class cls)
|
protected void |
registerUnreachableSignature(RMJAnnotation.Method anno,
Set unloadedClassNames)
|
protected void |
registerWithAbstractAncestors(Class cls)
|
protected void |
registerWithAbstractAncestorsOf(Class cls,
Class of,
List alreadyVisited)
|
protected void |
registerWithAbstractClassOrInterface(Class cls,
Class abs)
|
protected void |
runProgram(Class cls,
String[] args)
|
protected String |
tupleToString(Object[] tuple)
|
protected String |
usage()
|
protected void |
verifyCompleteness(Class cls,
RMJAnnotation anno)
|
protected void |
verifyCompletenessOfAbstractSignature(RMJSignature asig)
|
protected void |
verifyCompletenessOfAbstractSignature(RMJSignature asig,
Class cls)
|
protected void |
verifyCompletenessOfTopConcreteClass(Class cls)
|
protected void |
verifyCompletenessOfTopConcreteTuples(List tuples,
RMJSignature asig,
Class cls)
|
protected void |
verifyNonAmbiguity(RMJSignature sig,
boolean isOld,
List toBeLoaded)
|
protected void |
verifyNonAmbiguityAgainstAll(RMJSignature sig,
Map loadedSigsMap,
boolean isOld,
List toBeLoaded,
boolean onlyCheckIfHasIntSpec)
|
protected void |
verifyNonAmbiguityAndLoadExternalMethods()
|
protected void |
verifyNonAmbiguityOfNewSig(RMJSignature sig,
List toBeLoaded)
|
protected void |
verifyNonAmbiguityOfOldSig(RMJSignature sig,
List toBeLoaded)
|
protected void |
verifyNonAmbiguityOfSigs(RMJSignature nsig,
RMJSignature osig,
boolean isOld,
List toBeLoaded)
|
protected void |
warn(String msg)
|
| Methods inherited from class java.lang.ClassLoader |
clearAssertionStatus, defineClass, defineClass, defineClass, defineClass, definePackage, findClass, findLibrary, findLoadedClass, findResource, findResources, findSystemClass, getPackage, getPackages, getParent, getResource, getResourceAsStream, getResources, getSystemClassLoader, getSystemResource, getSystemResourceAsStream, getSystemResources, loadClass, resolveClass, setClassAssertionStatus, setDefaultAssertionStatus, setPackageAssertionStatus, setSigners |
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
OVERRIDES_RELATION
private static final DirectedAcyclicGraph.EdgeCalculator OVERRIDES_RELATION
loadedClassesAndInterfaces
protected Map loadedClassesAndInterfaces
topConcreteSubclassesMap
protected Map topConcreteSubclassesMap
sigsRequiringCompletenessCheckingMap
protected Map sigsRequiringCompletenessCheckingMap
signaturesMap
protected Map signaturesMap
sigImplementationsMap
protected Map sigImplementationsMap
newlyLoadedAbstractSignatures
protected List newlyLoadedAbstractSignatures
glueAnchorClassAnnotationsMap
protected Map glueAnchorClassAnnotationsMap
unreachableSigsMap
protected Map unreachableSigsMap
newlyReachableSigs
protected List newlyReachableSigs
loadedBaseAnchorSigsMap
protected Map loadedBaseAnchorSigsMap
loadedSubAnchorSigsMap
protected Map loadedSubAnchorSigsMap
loadedGlueSigsMap
protected Map loadedGlueSigsMap
interfaceSpecializedSignaturesMap
protected Map interfaceSpecializedSignaturesMap
sigsRequiringAmbiguityChecking
protected List sigsRequiringAmbiguityChecking
opsWithInterfaceSpecializers
protected List opsWithInterfaceSpecializers
RMJClassLoader
public RMJClassLoader()
RMJClassLoader
public RMJClassLoader(ClassLoader parent)
main
public static void main(String[] args)
throws ClassNotFoundException,
NoSuchMethodException,
IllegalAccessException,
InvocationTargetException
- Throws:
ClassNotFoundException
NoSuchMethodException
IllegalAccessException
InvocationTargetException
loaderMain
public void loaderMain(String[] args)
throws ClassNotFoundException,
NoSuchMethodException,
IllegalAccessException,
InvocationTargetException
- Throws:
ClassNotFoundException
NoSuchMethodException
IllegalAccessException
InvocationTargetException
usage
protected String usage()
registerAllGlue
protected void registerAllGlue()
throws ClassNotFoundException
- Throws:
ClassNotFoundException
runProgram
protected void runProgram(Class cls,
String[] args)
throws ClassNotFoundException,
NoSuchMethodException,
IllegalAccessException,
InvocationTargetException
- Throws:
ClassNotFoundException
NoSuchMethodException
IllegalAccessException
InvocationTargetException
loadClass
public Class loadClass(String name)
throws ClassNotFoundException
- Overrides:
loadClass in class ClassLoader
- Throws:
ClassNotFoundException
loadUserClass
protected Class loadUserClass(String name)
throws ClassNotFoundException
- Throws:
ClassNotFoundException
readClassByteCode
public byte[] readClassByteCode(String name)
throws ClassNotFoundException
- Throws:
ClassNotFoundException
readAll
protected byte[] readAll(InputStream strm)
throws IOException
- Throws:
IOException
loadSystemClass
protected Class loadSystemClass(String name)
throws ClassNotFoundException
- Throws:
ClassNotFoundException
registerSystemLoadAncestors
protected void registerSystemLoadAncestors(Class cls)
throws ClassNotFoundException
- Throws:
ClassNotFoundException
registerSystemLoad
protected void registerSystemLoad(Class cls)
throws ClassNotFoundException
- Throws:
ClassNotFoundException
processLoadedClass
protected void processLoadedClass(Class cls,
RMJAnnotation anno)
throws ClassNotFoundException
- Throws:
ClassNotFoundException
registerGlueAnchor
protected void registerGlueAnchor(String glueAnchorClassName)
throws ClassNotFoundException
- Throws:
ClassNotFoundException
readGlueAnchorAnnotations
protected RMJAnnotation readGlueAnchorAnnotations(String glueAnchorClassName)
throws ClassNotFoundException
- Throws:
ClassNotFoundException
registerGlueSignature
protected void registerGlueSignature(RMJAnnotation.Method anno)
registerUnreachableSignature
protected void registerUnreachableSignature(RMJAnnotation.Method anno,
Set unloadedClassNames)
registerClass
protected void registerClass(Class cls,
RMJAnnotation anno)
registerWithAbstractAncestors
protected void registerWithAbstractAncestors(Class cls)
registerWithAbstractAncestorsOf
protected void registerWithAbstractAncestorsOf(Class cls,
Class of,
List alreadyVisited)
registerWithAbstractClassOrInterface
protected void registerWithAbstractClassOrInterface(Class cls,
Class abs)
registerSignature
protected void registerSignature(RMJAnnotation.Method anno)
registerReachableSignature
protected void registerReachableSignature(RMJAnnotation.Method anno)
registerAbstractSignature
protected void registerAbstractSignature(RMJSignature asig)
registerConcreteSig
protected void registerConcreteSig(RMJSignature csig,
RMJSignature asig)
verifyNonAmbiguityAndLoadExternalMethods
protected void verifyNonAmbiguityAndLoadExternalMethods()
throws ClassNotFoundException
- Throws:
ClassNotFoundException
loadDispatcherClass
protected void loadDispatcherClass(RMJSignature sig)
throws ClassNotFoundException
- Throws:
ClassNotFoundException
loadErrorSig
protected void loadErrorSig(RMJErrorSignature esig)
throws ClassNotFoundException
- Throws:
ClassNotFoundException
verifyNonAmbiguityOfNewSig
protected void verifyNonAmbiguityOfNewSig(RMJSignature sig,
List toBeLoaded)
verifyNonAmbiguityOfOldSig
protected void verifyNonAmbiguityOfOldSig(RMJSignature sig,
List toBeLoaded)
verifyNonAmbiguity
protected void verifyNonAmbiguity(RMJSignature sig,
boolean isOld,
List toBeLoaded)
verifyNonAmbiguityAgainstAll
protected void verifyNonAmbiguityAgainstAll(RMJSignature sig,
Map loadedSigsMap,
boolean isOld,
List toBeLoaded,
boolean onlyCheckIfHasIntSpec)
verifyNonAmbiguityOfSigs
protected void verifyNonAmbiguityOfSigs(RMJSignature nsig,
RMJSignature osig,
boolean isOld,
List toBeLoaded)
checkForResolvingSig
protected boolean checkForResolvingSig(Object[] intersection,
boolean isOld,
RMJSignature nsig,
RMJSignature osig)
checkCollectionForResolvingSig
protected boolean checkCollectionForResolvingSig(Collection sigs,
RMJOperation op,
Object[] intersection,
RMJSignature nsig,
RMJSignature osig)
registerNonAmbiguousSig
protected void registerNonAmbiguousSig(RMJSignature sig,
Map loadedSigsMap)
verifyCompleteness
protected void verifyCompleteness(Class cls,
RMJAnnotation anno)
verifyCompletenessOfTopConcreteClass
protected void verifyCompletenessOfTopConcreteClass(Class cls)
collectAbstractSignaturesAbove
protected void collectAbstractSignaturesAbove(Class cls,
HashSet asigs)
collectAbstractSignaturesOf
protected void collectAbstractSignaturesOf(Class cls,
HashSet asigs)
verifyCompletenessOfAbstractSignature
protected void verifyCompletenessOfAbstractSignature(RMJSignature asig)
verifyCompletenessOfAbstractSignature
protected void verifyCompletenessOfAbstractSignature(RMJSignature asig,
Class cls)
generateTopConcreteTuplesBelow
protected List generateTopConcreteTuplesBelow(RMJSignature asig)
throws RMJClassLoader.EmptyTupleSet
- Throws:
RMJClassLoader.EmptyTupleSet
generateTupleOfTopConcreteSetsBelow
protected List[] generateTupleOfTopConcreteSetsBelow(RMJSignature asig)
throws RMJClassLoader.EmptyTupleSet
- Throws:
RMJClassLoader.EmptyTupleSet
generateTopConcreteSetsBelow
protected List generateTopConcreteSetsBelow(Object specializer)
throws RMJClassLoader.EmptyTupleSet
- Throws:
RMJClassLoader.EmptyTupleSet
generateCrossProduct
protected List generateCrossProduct(List[] tupleOfSets)
generateCrossProductTo
protected List generateCrossProductTo(List[] tupleOfSets,
int pos)
verifyCompletenessOfTopConcreteTuples
protected void verifyCompletenessOfTopConcreteTuples(List tuples,
RMJSignature asig,
Class cls)
computeIntersection
Collection computeIntersection(Class cls1,
Class cls2)
prettyString
public String prettyString(RMJSignature sig)
prettyString
public String prettyString(RMJAnnotation.Method sig)
prettyString
protected String prettyString(Object[] tuple)
tupleToString
protected String tupleToString(Object[] tuple)
warn
protected void warn(String msg)
lookupClass
Class lookupClass(String className)
throws ClassNotFoundException
- Throws:
ClassNotFoundException
isLoaded
boolean isLoaded(String className)
isInterface
protected boolean isInterface(Class cls)
isAbstractClassOrInterface
protected boolean isAbstractClassOrInterface(Class cls)
isAbstractClass
protected boolean isAbstractClass(Class cls)
isConcreteClass
protected boolean isConcreteClass(Class cls)
isTopConcreteClass
protected boolean isTopConcreteClass(Class cls)
printClassReport
public void printClassReport(PrintStream strm)
mjc is Copyright (C) 2000-2004 by Iowa State University and is distributed under the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. mjc is based in part on the Kopi project Copyright (C) 1990-99 DMS Decision Management Systems Ges.m.b.H.