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