8170599: compiler/** tests using ToolProvider.getSystemClassLoader failing
Alan Bateman
Alan.Bateman at oracle.com
Thu Dec 1 15:05:41 UTC 2016
I need a Reviewer for a trivial change to two tests in
hotspot/test/compiler/** that are failing in jdk9/dev. We noticed these
failures while trying to bring the module system into jdk9/dev. The
failures have been in jdk9/dev since Nov 22 when javax.tool.ToolProvider
was changed via JDK-8155765 to return null. The impact of that change is
that these two tests fail with NCDFE as they are attempting to load the
entry point for the attach API with the null loader (but these classes
aren't visible via that loader). The change is to use the system class
loader to load the entry point for the attach API. I've also used the
opportunity to update the @modules tag to add jdk.attach because that's
a lurking issue with these tests too. Patch inlined below.
-Alan
$ hg diff -g
diff --git
a/test/compiler/jsr292/RedefineMethodUsedByMultipleMethodHandles.java
b/test/compiler/jsr292/RedefineMethodUsedByMultipleMethodHandles.java
--- a/test/compiler/jsr292/RedefineMethodUsedByMultipleMethodHandles.java
+++ b/test/compiler/jsr292/RedefineMethodUsedByMultipleMethodHandles.java
@@ -30,6 +30,7 @@
* java.compiler
* java.instrument
* java.management
+ * jdk.attach
*
* @run main/othervm
compiler.jsr292.RedefineMethodUsedByMultipleMethodHandles
*/
@@ -42,7 +43,6 @@
import jdk.internal.org.objectweb.asm.MethodVisitor;
import jdk.internal.org.objectweb.asm.Opcodes;
-import javax.tools.ToolProvider;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
@@ -132,7 +132,7 @@
int p = vmName.indexOf('@');
assert p != -1 : "VM name not in <pid>@<host> format: " + vmName;
String pid = vmName.substring(0, p);
- ClassLoader cl = ToolProvider.getSystemToolClassLoader();
+ ClassLoader cl = ClassLoader.getSystemClassLoader();
Class<?> c =
Class.forName("com.sun.tools.attach.VirtualMachine", true, cl);
Method attach = c.getDeclaredMethod("attach", String.class);
Method loadAgent = c.getDeclaredMethod("loadAgent", String.class);
diff --git
a/test/compiler/jvmci/jdk.vm.ci.runtime.test/src/jdk/vm/ci/runtime/test/RedefineClassTest.java
b/test/compiler/jvmci/jdk.vm.ci.runtime.test/src/jdk/vm/ci/runtime/test/RedefineClassTest.java
---
a/test/compiler/jvmci/jdk.vm.ci.runtime.test/src/jdk/vm/ci/runtime/test/RedefineClassTest.java
+++
b/test/compiler/jvmci/jdk.vm.ci.runtime.test/src/jdk/vm/ci/runtime/test/RedefineClassTest.java
@@ -27,6 +27,7 @@
* @library ../../../../../
* @modules jdk.vm.ci/jdk.vm.ci.meta
* jdk.vm.ci/jdk.vm.ci.runtime
+ * jdk.attach
* java.base/jdk.internal.misc
* @run junit/othervm -XX:+UnlockExperimentalVMOptions
-XX:+EnableJVMCI jdk.vm.ci.runtime.test.RedefineClassTest
*/
@@ -37,7 +38,6 @@
import org.junit.Assert;
import org.junit.Test;
-import javax.tools.ToolProvider;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
@@ -137,7 +137,7 @@
int p = vmName.indexOf('@');
assumeTrue(p != -1);
String pid = vmName.substring(0, p);
- ClassLoader cl = ToolProvider.getSystemToolClassLoader();
+ ClassLoader cl = ClassLoader.getSystemClassLoader();
Class<?> c =
Class.forName("com.sun.tools.attach.VirtualMachine", true, cl);
Method attach = c.getDeclaredMethod("attach", String.class);
Method loadAgent = c.getDeclaredMethod("loadAgent",
String.class, String.class);
More information about the hotspot-dev
mailing list