nashorn/test/script/nosecurity/JDK-8044798.js
changeset 36517 41a1c20eb619
parent 32895 5a09b2d3d73a
child 42380 180839e7d68a
--- a/nashorn/test/script/nosecurity/JDK-8044798.js	Tue Mar 15 13:48:31 2016 -0700
+++ b/nashorn/test/script/nosecurity/JDK-8044798.js	Thu Mar 17 19:04:35 2016 +0000
@@ -27,7 +27,6 @@
  * @test
  * @option -Dnashorn.mirror.always=false
  * @fork
- * @run
  */
 
 // basic API exercise checks
@@ -120,18 +119,25 @@
 
 var Source = Java.type("jdk.nashorn.internal.runtime.Source");
 var Context = Java.type("jdk.nashorn.internal.runtime.Context");
+var ThrowErrorManager = Java.type("jdk.nashorn.internal.runtime.Context.ThrowErrorManager");
+var contextCls = java.lang.Class.forName("jdk.nashorn.internal.runtime.Context");
 var sourceCls = Source.class;
 var errorMgrCls = Java.type("jdk.nashorn.internal.runtime.ErrorManager").class;
 var booleanCls = Java.type("java.lang.Boolean").TYPE;
+var stringCls = Java.type("java.lang.String").class;
 
 // private compile method of Context class
-var compileMethod = Context.class.getDeclaredMethod("compile",
+var compileMethod = contextCls.getDeclaredMethod("compile",
                 sourceCls, errorMgrCls, booleanCls, booleanCls);
 compileMethod.accessible = true;
 
-var scriptCls = compileMethod.invoke(Context.context,
-    Source.sourceFor("test", "print('hello')"),
-    new Context.ThrowErrorManager(), false, false);
+var getContextMethod = contextCls.getMethod("getContext");
+getContextMethod.accessible = true;
+
+var sourceForMethod = sourceCls.getMethod("sourceFor", stringCls, stringCls);
+var scriptCls = compileMethod.invoke(getContextMethod.invoke(null),
+    sourceForMethod.invoke(null, "test", "print('hello')"),
+    ThrowErrorManager.class.newInstance(), false, false);
 
 var SCRIPT_CLASS_NAME_PREFIX = "jdk.nashorn.internal.scripts.Script$";
 print("script class name pattern satisfied? " +