diff options
author | tromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-02-07 21:29:04 +0000 |
---|---|---|
committer | tromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-02-07 21:29:04 +0000 |
commit | daa4e295752aca4a0cda33ea5e05af597382d12d (patch) | |
tree | 9321a4ce5d93e720f8ccef64c5a68a48525104d1 /libjava/java/lang/natClassLoader.cc | |
parent | cc57ce063492a870faaa15d9909e985ff3c0befb (diff) | |
download | ppe42-gcc-daa4e295752aca4a0cda33ea5e05af597382d12d.tar.gz ppe42-gcc-daa4e295752aca4a0cda33ea5e05af597382d12d.zip |
* defineclass.cc (handleClassBegin): Use
_Jv_RegisterInitiatingLoader.
* java/lang/Class.h (_Jv_UnregisterInitiatingLoader): Declare.
* java/lang/natVMClassLoader.cc (resolveClass): Don't register
class. Use _Jv_UnregisterInitiatingLoader.
* java/lang/natClassLoader.cc (_Jv_UnregisterInitiatingLoader):
New function.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@94717 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libjava/java/lang/natClassLoader.cc')
-rw-r--r-- | libjava/java/lang/natClassLoader.cc | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/libjava/java/lang/natClassLoader.cc b/libjava/java/lang/natClassLoader.cc index 15fb9eb415c..17b2a883386 100644 --- a/libjava/java/lang/natClassLoader.cc +++ b/libjava/java/lang/natClassLoader.cc @@ -110,6 +110,16 @@ _Jv_RegisterInitiatingLoader (jclass klass, java::lang::ClassLoader *loader) loader->loadedClasses->put(klass->name->toString(), klass); } +// If we found an error while defining an interpreted class, we must +// go back and unregister it. +void +_Jv_UnregisterInitiatingLoader (jclass klass, java::lang::ClassLoader *loader) +{ + if (! loader) + loader = java::lang::ClassLoader::getSystemClassLoader(); + loader->loadedClasses->remove(klass->name->toString()); +} + // This function is called many times during startup, before main() is // run. At that point in time we know for certain we are running // single-threaded, so we don't need to lock when adding classes to the |