diff options
author | Tom Tromey <tromey@redhat.com> | 2005-03-24 00:04:22 +0000 |
---|---|---|
committer | Tom Tromey <tromey@gcc.gnu.org> | 2005-03-24 00:04:22 +0000 |
commit | aa893047e8c09ca8b27e3583edd2829ade0a2318 (patch) | |
tree | 41feeca3037911da241efe1e734ed5c9ba7164c8 /libjava/java/lang/natVMClassLoader.cc | |
parent | 85624ffd341567caea1762d5534acf63c4d630db (diff) | |
download | gcc-aa893047e8c09ca8b27e3583edd2829ade0a2318.zip gcc-aa893047e8c09ca8b27e3583edd2829ade0a2318.tar.gz gcc-aa893047e8c09ca8b27e3583edd2829ade0a2318.tar.bz2 |
Makefile.in: Rebuilt.
* Makefile.in: Rebuilt.
* Makefile.am (AM_CXXFLAGS): Define TOOLEXECLIBDIR.
(libgcj0_convenience_la_SOURCES): Don't include
gnu_xml_source_files.
(libgcj0_convenience_la_LIBADD): New variable.
(libgcj_la_LIBADD): Don't include sax or w3c_dom.
(all_java_source_files): javax_imageio_source_files,
javax_xml_source_files, and gnu_java_beans_source_files.
($(gnu_xml_source_files:.java=.lo)): Removed target.
(gnu-xml.lo): New target.
(javax-imageio.lo): Likewise.
(javax-xml.lo): Likewise.
(gnu-java-beans.lo): Likewise.
(gnu_java_beans_source_files): New variable.
(javax_imageio_source_files): Likewise.
(javax_xml_source_files): Likewise.
(javax_source_files): Moved files to other variable.
(awt_java_source_files): Likewise.
(ordinary_java_source_files): Added BootClassLoader.java.
* java/lang/natVMClassLoader.cc (defineClass): Use boot loader,
not system class loader.
(initBootLoader): New method.
(loadClass): Search bootLoader.
* java/lang/natClassLoader.cc (_Jv_RegisterInitiatingLoader): Use
boot loader, not system class loader.
(_Jv_UnregisterInitiatingLoader): Likewise.
(_Jv_FindClass): Likewise. Ensure entries in
bootstrap_class_list are unique.
* java/lang/natClass.cc (getClassLoader): Don't special case
system class loader.
* java/lang/VMClassLoader.java (bootLoader): New field.
(getResource): Use bootLoader.
(getResources): Likewise.
(initBootLoader): Declare.
* gnu/gcj/runtime/BootClassLoader.java: New file.
* external/sax/org/xml/sax/helpers/NamespaceSupport.java
(EMPTY_ENUMERATION): Now package-private.
* external/w3c_com/Makefile.in: Rebuilt.
* external/w3c_com/Makefile.am (MULTIBUILDTOP): New variable.
(w3c.jar): New target.
(classes.stamp): Updated.
(toolexeclib_LTLIBRARIES): Renamed from noinst_LTLIBRARIES.
Changed name of library.
(libw3c_gcj_la_SOURCES): New variable.
(libw3c_gcj_la_GCJFLAGS): Likewise.
(source_files): Renamed from lib3c_convenience_la_SOURCES.
* external/sax/Makefile.in: Rebuilt.
* external/sax/Makefile.am (MULTIBUILDTOP): New variable.
(sax.jar): New target.
(classes.stamp): Updated.
(toolexeclib_LTLIBRARIES): Renamed from noinst_LTLIBRARIES.
Changed name of library.
(libsax_gcj_la_SOURCES): New variable.
(libsax_gcj_la_GCJFLAGS): Likewise.
(source_files): Renamed from libsax_convenience_la_SOURCES.
* stacktrace.cc (non_system_trace_fn): Don't look at system class
loader.
* prims.cc (_Jv_CreateJavaVM): Initialize the bootstrap class
loader.
(_Jv_RunMain): Handle case where 'runtime' is NULL at exit.
From-SVN: r96960
Diffstat (limited to 'libjava/java/lang/natVMClassLoader.cc')
-rw-r--r-- | libjava/java/lang/natVMClassLoader.cc | 25 |
1 files changed, 20 insertions, 5 deletions
diff --git a/libjava/java/lang/natVMClassLoader.cc b/libjava/java/lang/natVMClassLoader.cc index 9a539d7..c59e1d6 100644 --- a/libjava/java/lang/natVMClassLoader.cc +++ b/libjava/java/lang/natVMClassLoader.cc @@ -25,6 +25,7 @@ details. */ #include <java/lang/VMCompiler.h> #include <gnu/gcj/runtime/VMClassLoader.h> #include <gnu/gcj/runtime/SystemClassLoader.h> +#include <gnu/gcj/runtime/BootClassLoader.h> #include <java/lang/ClassLoader.h> #include <java/lang/Class.h> #include <java/lang/Throwable.h> @@ -66,9 +67,9 @@ java::lang::VMClassLoader::defineClass (java::lang::ClassLoader *loader, // until we're done loading. JvSynchronize sync (klass); - // Record the defining loader. For the system class loader, we - // record NULL. - if (loader != java::lang::ClassLoader::systemClassLoader) + // Record the defining loader. For the bootstrap class loader, + // we record NULL. + if (loader != bootLoader) klass->loader = loader; if (name != 0) @@ -122,11 +123,25 @@ java::lang::VMClassLoader::getPrimitiveClass (jchar type) return _Jv_FindClassFromSignature (sig, NULL); } +void +java::lang::VMClassLoader::initBootLoader(jstring libdir) +{ + bootLoader = new gnu::gcj::runtime::BootClassLoader(libdir); +} + jclass java::lang::VMClassLoader::loadClass(jstring name, jboolean resolve) { - _Jv_Utf8Const *utf = _Jv_makeUtf8Const (name); - jclass klass = _Jv_FindClassInCache (utf); + // We try the boot loader first, so that the endorsed directory + // overrides compiled-in classes. + jclass klass = NULL; + if (bootLoader) + klass = bootLoader->bootLoadClass(name); + if (! klass) + { + _Jv_Utf8Const *utf = _Jv_makeUtf8Const (name); + klass = _Jv_FindClassInCache (utf); + } if (klass) { // We never want to return a class without its supers linked. |