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
This commit is contained in:
parent
85624ffd34
commit
aa893047e8
24 changed files with 8517 additions and 10715 deletions
|
@ -43,6 +43,7 @@ details. */
|
|||
#include <java/io/Serializable.h>
|
||||
#include <java/lang/Cloneable.h>
|
||||
#include <java/util/HashMap.h>
|
||||
#include <gnu/gcj/runtime/BootClassLoader.h>
|
||||
|
||||
// Size of local hash table.
|
||||
#define HASH_LEN 1013
|
||||
|
@ -106,7 +107,7 @@ void
|
|||
_Jv_RegisterInitiatingLoader (jclass klass, java::lang::ClassLoader *loader)
|
||||
{
|
||||
if (! loader)
|
||||
loader = java::lang::ClassLoader::systemClassLoader;
|
||||
loader = java::lang::VMClassLoader::bootLoader;
|
||||
loader->loadedClasses->put(klass->name->toString(), klass);
|
||||
}
|
||||
|
||||
|
@ -116,7 +117,7 @@ void
|
|||
_Jv_UnregisterInitiatingLoader (jclass klass, java::lang::ClassLoader *loader)
|
||||
{
|
||||
if (! loader)
|
||||
loader = java::lang::ClassLoader::systemClassLoader;
|
||||
loader = java::lang::VMClassLoader::bootLoader;
|
||||
loader->loadedClasses->remove(klass->name->toString());
|
||||
}
|
||||
|
||||
|
@ -211,13 +212,14 @@ _Jv_FindClass (_Jv_Utf8Const *name, java::lang::ClassLoader *loader)
|
|||
// See if the class was already loaded by this loader. This handles
|
||||
// initiating loader checks, as we register classes with their
|
||||
// initiating loaders.
|
||||
java::lang::ClassLoader *sys = java::lang::ClassLoader::systemClassLoader;
|
||||
|
||||
java::lang::ClassLoader *boot = java::lang::VMClassLoader::bootLoader;
|
||||
java::lang::ClassLoader *real = loader;
|
||||
if (! real)
|
||||
real = sys;
|
||||
real = boot;
|
||||
jstring sname = name->toString();
|
||||
// We might still be bootstrapping the VM, in which case there
|
||||
// won't be a system class loader yet.
|
||||
// won't be a bootstrap class loader yet.
|
||||
jclass klass = real ? real->findLoadedClass (sname) : NULL;
|
||||
|
||||
if (! klass)
|
||||
|
@ -230,16 +232,16 @@ _Jv_FindClass (_Jv_Utf8Const *name, java::lang::ClassLoader *loader)
|
|||
// If "loader" delegated the loadClass operation to another
|
||||
// loader, explicitly register that it is also an initiating
|
||||
// loader of the given class.
|
||||
java::lang::ClassLoader *delegate = (loader == sys
|
||||
java::lang::ClassLoader *delegate = (loader == boot
|
||||
? NULL
|
||||
: loader);
|
||||
if (klass && klass->getClassLoaderInternal () != delegate)
|
||||
_Jv_RegisterInitiatingLoader (klass, loader);
|
||||
}
|
||||
else if (sys)
|
||||
else if (boot)
|
||||
{
|
||||
// Load using the bootstrap loader jvmspec 5.3.1.
|
||||
klass = sys->loadClass (sname, false);
|
||||
klass = java::lang::VMClassLoader::loadClass (sname, false);
|
||||
|
||||
// Register that we're an initiating loader.
|
||||
if (klass)
|
||||
|
@ -250,9 +252,21 @@ _Jv_FindClass (_Jv_Utf8Const *name, java::lang::ClassLoader *loader)
|
|||
// Not even a bootstrap loader, try the built-in cache.
|
||||
klass = _Jv_FindClassInCache (name);
|
||||
|
||||
if (bootstrap_index == BOOTSTRAP_CLASS_LIST_SIZE)
|
||||
abort ();
|
||||
bootstrap_class_list[bootstrap_index++] = klass;
|
||||
bool found = false;
|
||||
for (int i = 0; i < bootstrap_index; ++i)
|
||||
{
|
||||
if (bootstrap_class_list[i] == klass)
|
||||
{
|
||||
found = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (! found)
|
||||
{
|
||||
if (bootstrap_index == BOOTSTRAP_CLASS_LIST_SIZE)
|
||||
abort ();
|
||||
bootstrap_class_list[bootstrap_index++] = klass;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue