aboutsummaryrefslogtreecommitdiff
path: root/src/share/vm/prims/jvm.cpp
diff options
context:
space:
mode:
authortonyp <none@none>2008-08-21 23:36:31 -0400
committertonyp <none@none>2008-08-21 23:36:31 -0400
commit93a523cef1b21c01ff25ca491345477880cda664 (patch)
tree8f474fbee2652cc46599123add09eb7786202fba /src/share/vm/prims/jvm.cpp
parent0d090da9d671cfa0b24943bff048833620df377b (diff)
parentb115a53b3c1be517bc21337f510c459cf64cb408 (diff)
downloadjdk8u_hotspot-93a523cef1b21c01ff25ca491345477880cda664.tar.gz
Merge
Diffstat (limited to 'src/share/vm/prims/jvm.cpp')
-rw-r--r--src/share/vm/prims/jvm.cpp26
1 files changed, 25 insertions, 1 deletions
diff --git a/src/share/vm/prims/jvm.cpp b/src/share/vm/prims/jvm.cpp
index 222794fe2..eb99862b1 100644
--- a/src/share/vm/prims/jvm.cpp
+++ b/src/share/vm/prims/jvm.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright 1997-2007 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 1997-2008 Sun Microsystems, Inc. All Rights Reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -628,6 +628,30 @@ JVM_ENTRY(void, JVM_ResolveClass(JNIEnv* env, jclass cls))
if (PrintJVMWarnings) warning("JVM_ResolveClass not implemented");
JVM_END
+// 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,
+ jboolean throwError))
+ JVMWrapper3("JVM_FindClassFromBootLoader %s throw %s", name,
+ throwError ? "error" : "exception");
+ return JVM_FindClassFromClassLoader(env, name, JNI_FALSE,
+ (jobject)NULL, throwError);
+JVM_END
JVM_ENTRY(jclass, JVM_FindClassFromClassLoader(JNIEnv* env, const char* name,
jboolean init, jobject loader,