src/share/vm/prims/jvm.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File 8042418_hs Cdiff src/share/vm/prims/jvm.cpp

src/share/vm/prims/jvm.cpp

Print this page

        

*** 698,724 **** JVM_END // Returns a class loaded by the bootstrap class loader; or null // if not found. ClassNotFoundException is not thrown. ! // ! // Rationale behind JVM_FindClassFromBootLoader ! // a> JVM_FindClassFromClassLoader was never exported in the export tables. ! // b> because of (a) java.dll has a direct dependecy on the unexported ! // private symbol "_JVM_FindClassFromClassLoader@20". ! // c> the launcher cannot use the private symbol as it dynamically opens ! // the entry point, so if something changes, the launcher will fail ! // unexpectedly at runtime, it is safest for the launcher to dlopen a ! // stable exported interface. ! // d> re-exporting JVM_FindClassFromClassLoader as public, will cause its ! // signature to change from _JVM_FindClassFromClassLoader@20 to ! // JVM_FindClassFromClassLoader and will not be backward compatible ! // with older JDKs. ! // Thus a public/stable exported entry point is the right solution, ! // public here means public in linker semantics, and is exported only ! // to the JDK, and is not intended to be a public API. ! JVM_ENTRY(jclass, JVM_FindClassFromBootLoader(JNIEnv* env, const char* name)) JVMWrapper2("JVM_FindClassFromBootLoader %s", name); // Java libraries should ensure that name is never null... --- 698,708 ---- JVM_END // Returns a class loaded by the bootstrap class loader; or null // if not found. ClassNotFoundException is not thrown. ! // FindClassFromBootLoader is exported to the launcher for windows. JVM_ENTRY(jclass, JVM_FindClassFromBootLoader(JNIEnv* env, const char* name)) JVMWrapper2("JVM_FindClassFromBootLoader %s", name); // Java libraries should ensure that name is never null...
*** 738,774 **** trace_class_resolution(k); } return (jclass) JNIHandles::make_local(env, k->java_mirror()); JVM_END - // Not used; JVM_FindClassFromCaller replaces this. - JVM_ENTRY(jclass, JVM_FindClassFromClassLoader(JNIEnv* env, const char* name, - jboolean init, jobject loader, - jboolean throwError)) - JVMWrapper3("JVM_FindClassFromClassLoader %s throw %s", name, - throwError ? "error" : "exception"); - // Java libraries should ensure that name is never null... - if (name == NULL || (int)strlen(name) > Symbol::max_length()) { - // It's impossible to create this class; the name cannot fit - // into the constant pool. - if (throwError) { - THROW_MSG_0(vmSymbols::java_lang_NoClassDefFoundError(), name); - } else { - THROW_MSG_0(vmSymbols::java_lang_ClassNotFoundException(), name); - } - } - TempNewSymbol h_name = SymbolTable::new_symbol(name, CHECK_NULL); - Handle h_loader(THREAD, JNIHandles::resolve(loader)); - jclass result = find_class_from_class_loader(env, h_name, init, h_loader, - Handle(), throwError, THREAD); - - if (TraceClassResolution && result != NULL) { - trace_class_resolution(java_lang_Class::as_Klass(JNIHandles::resolve_non_null(result))); - } - return result; - JVM_END - // Find a class with this name in this loader, using the caller's protection domain. JVM_ENTRY(jclass, JVM_FindClassFromCaller(JNIEnv* env, const char* name, jboolean init, jobject loader, jclass caller)) JVMWrapper2("JVM_FindClassFromCaller %s throws ClassNotFoundException", name); --- 722,731 ----
src/share/vm/prims/jvm.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File