8170599: compiler/** tests using ToolProvider.getSystemClassLoader failing

Mandy Chung mandy.chung at oracle.com
Thu Dec 1 15:57:24 UTC 2016


Looks good.

Mandy

> On Dec 1, 2016, at 7:05 AM, Alan Bateman <Alan.Bateman at oracle.com> wrote:
> 
> 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