natVMClassLoader.cc (getSystemClassLoaderInternal): Updated for name change.
* java/lang/natVMClassLoader.cc (getSystemClassLoaderInternal): Updated for name change. (nativeFindClass): New method. (loadClass): Use nativeFindClass. * java/lang/natClassLoader.cc (_Jv_FindClass): Use single-argument form of loadClass. * java/lang/VMClassLoader.java (tried_libraries, lib_control, LIB_FULL, LIB_CACHE, LIB_NEVER): New fields from old VMClassLoader. (initialize): New method. (nativeFindClass): Declare. * gnu/gcj/runtime/natVMClassLoader.cc: Removed. * gnu/gcj/runtime/VMClassLoader.java: Removed. * gnu/gcj/runtime/ExtensionClassLoader.java: Renamed from VMClassLoader.java. (definePackageForNative): Removed. (tried_libraries, LIB_CACHE, LIB_FULL, LIB_NEVER, lib_control): Moved to VMClassLoader.java. * prims.cc (_Jv_CreateJavaVM): Updated for renaming. * Makefile.am (gnu/gcj/runtime/ExtensionClassLoader.h): Renamed. (ordinary_java_source_files): Added ExtensionClassLoader.java, removed VMClassLoader.java. (nat_source_files): Removed natVMClassLoader.cc. From-SVN: r97414
This commit is contained in:
@@ -51,6 +51,7 @@ import java.security.ProtectionDomain;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Enumeration;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.Map;
|
||||
import java.util.StringTokenizer;
|
||||
import gnu.gcj.runtime.BootClassLoader;
|
||||
@@ -87,6 +88,17 @@ final class VMClassLoader
|
||||
// until we've initialized the system, at which point it is created.
|
||||
static BootClassLoader bootLoader;
|
||||
|
||||
// This keeps track of shared libraries we've already tried to load.
|
||||
private static HashSet tried_libraries;
|
||||
|
||||
// Holds one of the LIB_* constants; used to determine how shared
|
||||
// library loads are done.
|
||||
private static int lib_control;
|
||||
|
||||
private static final int LIB_FULL = 0;
|
||||
private static final int LIB_CACHE = 1;
|
||||
private static final int LIB_NEVER = 2;
|
||||
|
||||
/**
|
||||
* Helper to define a class using a string of bytes. This assumes that
|
||||
* the security checks have already been performed, if necessary.
|
||||
@@ -298,6 +310,30 @@ final class VMClassLoader
|
||||
|
||||
static native void initBootLoader(String libdir);
|
||||
|
||||
static void initialize(String libdir)
|
||||
{
|
||||
initBootLoader(libdir);
|
||||
|
||||
String p
|
||||
= System.getProperty ("gnu.gcj.runtime.VMClassLoader.library_control",
|
||||
"");
|
||||
if ("never".equals(p))
|
||||
lib_control = LIB_NEVER;
|
||||
else if ("cache".equals(p))
|
||||
lib_control = LIB_CACHE;
|
||||
else if ("full".equals(p))
|
||||
lib_control = LIB_FULL;
|
||||
else
|
||||
lib_control = LIB_CACHE;
|
||||
|
||||
tried_libraries = new HashSet();
|
||||
}
|
||||
|
||||
/**
|
||||
* Possibly load a .so and search it for classes.
|
||||
*/
|
||||
static native Class nativeFindClass(String name);
|
||||
|
||||
static ClassLoader getSystemClassLoader()
|
||||
{
|
||||
// This method is called as the initialization of systemClassLoader,
|
||||
|
||||
Reference in New Issue
Block a user