mirror of
git://gcc.gnu.org/git/gcc.git
synced 2024-12-24 04:58:57 +08:00
ClassLoader.java (loadedClasses): New field.
* java/lang/ClassLoader.java (loadedClasses): New field. (defineClass): Fixed indentation. Put new class in loadedClasses. (findLoadedClass): Implement here. * java/lang/natClassLoader.cc (findLoadedClass): Removed. From-SVN: r60043
This commit is contained in:
parent
70a72ca423
commit
f69bc49776
@ -1,3 +1,11 @@
|
||||
2002-12-11 Tom Tromey <tromey@redhat.com>
|
||||
|
||||
* java/lang/ClassLoader.java (loadedClasses): New field.
|
||||
(defineClass): Fixed indentation. Put new class in
|
||||
loadedClasses.
|
||||
(findLoadedClass): Implement here.
|
||||
* java/lang/natClassLoader.cc (findLoadedClass): Removed.
|
||||
|
||||
2002-12-10 Tom Tromey <tromey@redhat.com>
|
||||
|
||||
* Makefile.in: Rebuilt.
|
||||
|
@ -86,6 +86,14 @@ import java.util.*;
|
||||
*/
|
||||
public abstract class ClassLoader
|
||||
{
|
||||
/**
|
||||
* All classes loaded by this classloader. VM's may choose to implement
|
||||
* this cache natively; but it is here available for use if necessary. It
|
||||
* is not private in order to allow native code (and trusted subclasses)
|
||||
* access to this field.
|
||||
*/
|
||||
final Map loadedClasses = new HashMap();
|
||||
|
||||
/**
|
||||
* The desired assertion status of classes loaded by this loader, if not
|
||||
* overridden by package or class instructions.
|
||||
@ -446,31 +454,32 @@ public abstract class ClassLoader
|
||||
throw new java.lang.LinkageError ("class "
|
||||
+ name
|
||||
+ " already loaded");
|
||||
|
||||
|
||||
if (protectionDomain == null)
|
||||
protectionDomain = defaultProtectionDomain;
|
||||
|
||||
try {
|
||||
// Since we're calling into native code here,
|
||||
// we better make sure that any generated
|
||||
// exception is to spec!
|
||||
|
||||
return defineClass0 (name, data, off, len, protectionDomain);
|
||||
|
||||
} catch (LinkageError x) {
|
||||
throw x; // rethrow
|
||||
|
||||
} catch (java.lang.VirtualMachineError x) {
|
||||
throw x; // rethrow
|
||||
|
||||
} catch (java.lang.Throwable x) {
|
||||
// This should never happen, or we are beyond spec.
|
||||
|
||||
throw new InternalError ("Unexpected exception "
|
||||
+ "while defining class "
|
||||
+ name + ": "
|
||||
+ x.toString ());
|
||||
}
|
||||
try
|
||||
{
|
||||
Class retval = defineClass0 (name, data, off, len, protectionDomain);
|
||||
loadedClasses.put(retval.getName(), retval);
|
||||
return retval;
|
||||
}
|
||||
catch (LinkageError x)
|
||||
{
|
||||
throw x; // rethrow
|
||||
}
|
||||
catch (java.lang.VirtualMachineError x)
|
||||
{
|
||||
throw x; // rethrow
|
||||
}
|
||||
catch (java.lang.Throwable x)
|
||||
{
|
||||
// This should never happen, or we are beyond spec.
|
||||
throw new InternalError ("Unexpected exception "
|
||||
+ "while defining class "
|
||||
+ name + ": "
|
||||
+ x.toString ());
|
||||
}
|
||||
}
|
||||
|
||||
/** This is the entry point of defineClass into the native code */
|
||||
@ -722,8 +731,10 @@ public abstract class ClassLoader
|
||||
* @param name class to find.
|
||||
* @return the class loaded, or null.
|
||||
*/
|
||||
protected final native Class findLoadedClass(String name);
|
||||
|
||||
protected final Class findLoadedClass(String name)
|
||||
{
|
||||
return (Class) loadedClasses.get(name);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a resource using the system classloader.
|
||||
|
@ -189,12 +189,6 @@ java::lang::VMClassLoader::getPrimitiveClass (jchar type)
|
||||
return _Jv_FindClassFromSignature (sig, NULL);
|
||||
}
|
||||
|
||||
jclass
|
||||
java::lang::ClassLoader::findLoadedClass (jstring name)
|
||||
{
|
||||
return _Jv_FindClassInCache (_Jv_makeUtf8Const (name), this);
|
||||
}
|
||||
|
||||
/** This function does class-preparation for compiled classes.
|
||||
NOTE: It contains replicated functionality from
|
||||
_Jv_ResolvePoolEntry, and this is intentional, since that function
|
||||
|
Loading…
Reference in New Issue
Block a user