2413 native long findEntry(String name);
2414
2415 NativeLibrary(Class<?> fromClass, String name, boolean isBuiltin) {
2416 this.name = name;
2417 this.fromClass = fromClass;
2418 this.isBuiltin = isBuiltin;
2419 }
2420
2421 /*
2422 * Loads the native library and registers for cleanup when its
2423 * associated class loader is unloaded
2424 */
2425 boolean load() {
2426 if (handle != 0) {
2427 throw new InternalError("Native library " + name + " has been loaded");
2428 }
2429
2430 if (!load0(name, isBuiltin)) return false;
2431
2432 // register the class loader for cleanup when unloaded
2433 // built class loaders are never unloaded
2434 ClassLoader loader = fromClass.getClassLoader();
2435 if (loader != null &&
2436 loader != getBuiltinPlatformClassLoader() &&
2437 loader != getBuiltinAppClassLoader()) {
2438 CleanerFactory.cleaner().register(loader,
2439 new Unloader(name, handle, isBuiltin));
2440 }
2441 return true;
2442 }
2443
2444 static boolean loadLibrary(Class<?> fromClass, String name, boolean isBuiltin) {
2445 ClassLoader loader =
2446 fromClass == null ? null : fromClass.getClassLoader();
2447
2448 synchronized (loadedLibraryNames) {
2449 Map<String, NativeLibrary> libs =
2450 loader != null ? loader.nativeLibraries() : systemNativeLibraries();
2451 if (libs.containsKey(name)) {
2452 return true;
2453 }
|
2413 native long findEntry(String name);
2414
2415 NativeLibrary(Class<?> fromClass, String name, boolean isBuiltin) {
2416 this.name = name;
2417 this.fromClass = fromClass;
2418 this.isBuiltin = isBuiltin;
2419 }
2420
2421 /*
2422 * Loads the native library and registers for cleanup when its
2423 * associated class loader is unloaded
2424 */
2425 boolean load() {
2426 if (handle != 0) {
2427 throw new InternalError("Native library " + name + " has been loaded");
2428 }
2429
2430 if (!load0(name, isBuiltin)) return false;
2431
2432 // register the class loader for cleanup when unloaded
2433 // builtin class loaders are never unloaded
2434 ClassLoader loader = fromClass.getClassLoader();
2435 if (loader != null &&
2436 loader != getBuiltinPlatformClassLoader() &&
2437 loader != getBuiltinAppClassLoader()) {
2438 CleanerFactory.cleaner().register(loader,
2439 new Unloader(name, handle, isBuiltin));
2440 }
2441 return true;
2442 }
2443
2444 static boolean loadLibrary(Class<?> fromClass, String name, boolean isBuiltin) {
2445 ClassLoader loader =
2446 fromClass == null ? null : fromClass.getClassLoader();
2447
2448 synchronized (loadedLibraryNames) {
2449 Map<String, NativeLibrary> libs =
2450 loader != null ? loader.nativeLibraries() : systemNativeLibraries();
2451 if (libs.containsKey(name)) {
2452 return true;
2453 }
|