Thu, 20 Jun 2013 17:34:42 +0530
Merge
1.1 --- a/src/jdk/nashorn/internal/objects/NativeArguments.java Tue Jun 18 16:06:45 2013 +0100 1.2 +++ b/src/jdk/nashorn/internal/objects/NativeArguments.java Thu Jun 20 17:34:42 2013 +0530 1.3 @@ -125,7 +125,7 @@ 1.4 @Override 1.5 public void setArgument(final int key, final Object value) { 1.6 if (namedArgs.has(key)) { 1.7 - namedArgs.set(key, value, false); 1.8 + namedArgs = namedArgs.set(key, value, false); 1.9 } 1.10 } 1.11
2.1 --- a/src/jdk/nashorn/internal/objects/NativeArray.java Tue Jun 18 16:06:45 2013 +0100 2.2 +++ b/src/jdk/nashorn/internal/objects/NativeArray.java Thu Jun 20 17:34:42 2013 +0530 2.3 @@ -856,8 +856,12 @@ 2.4 } 2.5 2.6 // delete missing elements - which are at the end of sorted array 2.7 - sobj.setArray(array.delete(sorted.length, len - 1)); 2.8 - } 2.9 + if (sorted.length != len) { 2.10 + array = array.delete(sorted.length, len - 1); 2.11 + } 2.12 + 2.13 + sobj.setArray(array); 2.14 + } 2.15 2.16 return sobj; 2.17 } catch (final ClassCastException | NullPointerException e) {
3.1 --- a/src/jdk/nashorn/internal/runtime/URIUtils.java Tue Jun 18 16:06:45 2013 +0100 3.2 +++ b/src/jdk/nashorn/internal/runtime/URIUtils.java Thu Jun 20 17:34:42 2013 +0530 3.3 @@ -27,8 +27,6 @@ 3.4 3.5 import static jdk.nashorn.internal.runtime.ECMAErrors.uriError; 3.6 3.7 -import java.io.UnsupportedEncodingException; 3.8 - 3.9 /** 3.10 * URI handling global functions. ECMA 15.1.3 URI Handling Function Properties 3.11 * 3.12 @@ -127,6 +125,7 @@ 3.13 3.14 k += 2; 3.15 char C; 3.16 + // Most significant bit is zero 3.17 if ((B & 0x80) == 0) { 3.18 C = (char) B; 3.19 if (!component && URI_RESERVED.indexOf(C) >= 0) { 3.20 @@ -137,49 +136,68 @@ 3.21 sb.append(C); 3.22 } 3.23 } else { 3.24 - int n; 3.25 - for (n = 1; n < 6; n++) { 3.26 - if (((B << n) & 0x80) == 0) { 3.27 - break; 3.28 - } 3.29 - } 3.30 + // n is utf8 length, V is codepoint and minV is lower bound 3.31 + int n, V, minV; 3.32 3.33 - if (n == 1 || n > 4) { 3.34 + if ((B & 0xC0) == 0x80) { 3.35 + // 10xxxxxx - illegal first byte 3.36 + return error(string, k); 3.37 + } else if ((B & 0x20) == 0) { 3.38 + // 110xxxxx 10xxxxxx 3.39 + n = 2; 3.40 + V = B & 0x1F; 3.41 + minV = 0x80; 3.42 + } else if ((B & 0x10) == 0) { 3.43 + // 1110xxxx 10xxxxxx 10xxxxxx 3.44 + n = 3; 3.45 + V = B & 0x0F; 3.46 + minV = 0x800; 3.47 + } else if ((B & 0x08) == 0) { 3.48 + // 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx 3.49 + n = 4; 3.50 + V = B & 0x07; 3.51 + minV = 0x10000; 3.52 + } else if ((B & 0x04) == 0) { 3.53 + // 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 3.54 + n = 5; 3.55 + V = B & 0x03; 3.56 + minV = 0x200000; 3.57 + } else if ((B & 0x02) == 0) { 3.58 + // 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 3.59 + n = 6; 3.60 + V = B & 0x01; 3.61 + minV = 0x4000000; 3.62 + } else { 3.63 return error(string, k); 3.64 } 3.65 3.66 - if ((k + (3 * (n - 1))) >= len) { 3.67 + // check bound for sufficient chars 3.68 + if (k + (3*(n-1)) >= len) { 3.69 return error(string, k); 3.70 } 3.71 3.72 - final byte[] bbuf = new byte[n]; 3.73 - bbuf[0] = (byte) B; 3.74 - 3.75 for (int j = 1; j < n; j++) { 3.76 k++; 3.77 if (string.charAt(k) != '%') { 3.78 return error(string, k); 3.79 } 3.80 3.81 - if (k + 2 == len) { 3.82 - return error(string, k); 3.83 - } 3.84 - 3.85 B = toHexByte(string.charAt(k + 1), string.charAt(k + 2)); 3.86 if (B < 0 || (B & 0xC0) != 0x80) { 3.87 return error(string, k + 1); 3.88 } 3.89 3.90 + V = (V << 6) | (B & 0x3F); 3.91 k += 2; 3.92 - bbuf[j] = (byte) B; 3.93 } 3.94 3.95 - int V; 3.96 - try { 3.97 - V = ucs4Char(bbuf); 3.98 - } catch (final Exception e) { 3.99 - throw uriError(e, "bad.uri", string, Integer.toString(k)); 3.100 + // Check for overlongs and invalid codepoints. 3.101 + // The high and low surrogate halves used by UTF-16 3.102 + // (U+D800 through U+DFFF) are not legal Unicode values. 3.103 + if ((V < minV) || (V >= 0xD800 && V <= 0xDFFF)) { 3.104 + V = Integer.MAX_VALUE; 3.105 } 3.106 + 3.107 if (V < 0x10000) { 3.108 C = (char) V; 3.109 if (!component && URI_RESERVED.indexOf(C) >= 0) { 3.110 @@ -224,10 +242,6 @@ 3.111 return -1; 3.112 } 3.113 3.114 - private static int ucs4Char(final byte[] utf8) throws UnsupportedEncodingException { 3.115 - return new String(utf8, "UTF-8").codePointAt(0); 3.116 - } 3.117 - 3.118 private static String toHexEscape(final int u0) { 3.119 int u = u0; 3.120 int len;
4.1 --- a/src/jdk/nashorn/internal/runtime/arrays/ArrayData.java Tue Jun 18 16:06:45 2013 +0100 4.2 +++ b/src/jdk/nashorn/internal/runtime/arrays/ArrayData.java Thu Jun 20 17:34:42 2013 +0530 4.3 @@ -295,6 +295,29 @@ 4.4 public abstract ArrayData set(int index, double value, boolean strict); 4.5 4.6 /** 4.7 + * Set an empty value at a given index. Should only affect Object array. 4.8 + * 4.9 + * @param index the index 4.10 + * @return new array data (or same) 4.11 + */ 4.12 + public ArrayData setEmpty(final int index) { 4.13 + // Do nothing. 4.14 + return this; 4.15 + } 4.16 + 4.17 + /** 4.18 + * Set an empty value for a given range. Should only affect Object array. 4.19 + * 4.20 + * @param lo range low end 4.21 + * @param hi range high end 4.22 + * @return new array data (or same) 4.23 + */ 4.24 + public ArrayData setEmpty(final long lo, final long hi) { 4.25 + // Do nothing. 4.26 + return this; 4.27 + } 4.28 + 4.29 + /** 4.30 * Get an int value from a given index 4.31 * 4.32 * @param index the index
5.1 --- a/src/jdk/nashorn/internal/runtime/arrays/ArrayFilter.java Tue Jun 18 16:06:45 2013 +0100 5.2 +++ b/src/jdk/nashorn/internal/runtime/arrays/ArrayFilter.java Thu Jun 20 17:34:42 2013 +0530 5.3 @@ -129,6 +129,18 @@ 5.4 } 5.5 5.6 @Override 5.7 + public ArrayData setEmpty(final int index) { 5.8 + underlying.setEmpty(index); 5.9 + return this; 5.10 + } 5.11 + 5.12 + @Override 5.13 + public ArrayData setEmpty(final long lo, final long hi) { 5.14 + underlying.setEmpty(lo, hi); 5.15 + return this; 5.16 + } 5.17 + 5.18 + @Override 5.19 public int getInt(final int index) { 5.20 return underlying.getInt(index); 5.21 }
6.1 --- a/src/jdk/nashorn/internal/runtime/arrays/DeletedArrayFilter.java Tue Jun 18 16:06:45 2013 +0100 6.2 +++ b/src/jdk/nashorn/internal/runtime/arrays/DeletedArrayFilter.java Thu Jun 20 17:34:42 2013 +0530 6.3 @@ -142,6 +142,7 @@ 6.4 final long longIndex = ArrayIndex.toLongIndex(index); 6.5 assert longIndex >= 0 && longIndex < length(); 6.6 deleted.set(longIndex); 6.7 + underlying.setEmpty(index); 6.8 return this; 6.9 } 6.10 6.11 @@ -149,6 +150,7 @@ 6.12 public ArrayData delete(final long fromIndex, final long toIndex) { 6.13 assert fromIndex >= 0 && fromIndex <= toIndex && toIndex < length(); 6.14 deleted.setRange(fromIndex, toIndex + 1); 6.15 + underlying.setEmpty(fromIndex, toIndex); 6.16 return this; 6.17 } 6.18
7.1 --- a/src/jdk/nashorn/internal/runtime/arrays/DeletedRangeArrayFilter.java Tue Jun 18 16:06:45 2013 +0100 7.2 +++ b/src/jdk/nashorn/internal/runtime/arrays/DeletedRangeArrayFilter.java Thu Jun 20 17:34:42 2013 +0530 7.3 @@ -202,6 +202,8 @@ 7.4 @Override 7.5 public ArrayData delete(final int index) { 7.6 final long longIndex = ArrayIndex.toLongIndex(index); 7.7 + underlying.setEmpty(index); 7.8 + 7.9 if (longIndex + 1 == lo) { 7.10 lo = longIndex; 7.11 } else if (longIndex - 1 == hi) { 7.12 @@ -220,6 +222,7 @@ 7.13 } 7.14 lo = Math.min(fromIndex, lo); 7.15 hi = Math.max(toIndex, hi); 7.16 + underlying.setEmpty(lo, hi); 7.17 return this; 7.18 } 7.19
8.1 --- a/src/jdk/nashorn/internal/runtime/arrays/ObjectArrayData.java Tue Jun 18 16:06:45 2013 +0100 8.2 +++ b/src/jdk/nashorn/internal/runtime/arrays/ObjectArrayData.java Thu Jun 20 17:34:42 2013 +0530 8.3 @@ -139,6 +139,18 @@ 8.4 } 8.5 8.6 @Override 8.7 + public ArrayData setEmpty(final int index) { 8.8 + array[index] = ScriptRuntime.EMPTY; 8.9 + return this; 8.10 + } 8.11 + 8.12 + @Override 8.13 + public ArrayData setEmpty(final long lo, final long hi) { 8.14 + Arrays.fill(array, (int)Math.max(lo, 0L), (int)Math.min(hi, (long)Integer.MAX_VALUE), ScriptRuntime.EMPTY); 8.15 + return this; 8.16 + } 8.17 + 8.18 + @Override 8.19 public int getInt(final int index) { 8.20 return JSType.toInt32(array[index]); 8.21 } 8.22 @@ -165,11 +177,13 @@ 8.23 8.24 @Override 8.25 public ArrayData delete(final int index) { 8.26 + setEmpty(index); 8.27 return new DeletedRangeArrayFilter(this, index, index); 8.28 } 8.29 8.30 @Override 8.31 public ArrayData delete(final long fromIndex, final long toIndex) { 8.32 + setEmpty(fromIndex, toIndex); 8.33 return new DeletedRangeArrayFilter(this, fromIndex, toIndex); 8.34 } 8.35 8.36 @@ -181,7 +195,7 @@ 8.37 8.38 final int newLength = (int) (length() - 1); 8.39 final Object elem = array[newLength]; 8.40 - array[newLength] = 0; 8.41 + setEmpty(newLength); 8.42 setLength(newLength); 8.43 return elem; 8.44 }
9.1 --- a/src/jdk/nashorn/internal/runtime/arrays/SparseArrayData.java Tue Jun 18 16:06:45 2013 +0100 9.2 +++ b/src/jdk/nashorn/internal/runtime/arrays/SparseArrayData.java Thu Jun 20 17:34:42 2013 +0530 9.3 @@ -204,6 +204,18 @@ 9.4 } 9.5 9.6 @Override 9.7 + public ArrayData setEmpty(final int index) { 9.8 + underlying.setEmpty(index); 9.9 + return this; 9.10 + } 9.11 + 9.12 + @Override 9.13 + public ArrayData setEmpty(final long lo, final long hi) { 9.14 + underlying.setEmpty(lo, hi); 9.15 + return this; 9.16 + } 9.17 + 9.18 + @Override 9.19 public int getInt(final int index) { 9.20 if (index >= 0 && index < maxDenseLength) { 9.21 return underlying.getInt(index);
10.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 10.2 +++ b/test/script/basic/JDK-8010697.js Thu Jun 20 17:34:42 2013 +0530 10.3 @@ -0,0 +1,59 @@ 10.4 +/* 10.5 + * Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved. 10.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 10.7 + * 10.8 + * This code is free software; you can redistribute it and/or modify it 10.9 + * under the terms of the GNU General Public License version 2 only, as 10.10 + * published by the Free Software Foundation. 10.11 + * 10.12 + * This code is distributed in the hope that it will be useful, but WITHOUT 10.13 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 10.14 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 10.15 + * version 2 for more details (a copy is included in the LICENSE file that 10.16 + * accompanied this code). 10.17 + * 10.18 + * You should have received a copy of the GNU General Public License version 10.19 + * 2 along with this work; if not, write to the Free Software Foundation, 10.20 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 10.21 + * 10.22 + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 10.23 + * or visit www.oracle.com if you need additional information or have any 10.24 + * questions. 10.25 + */ 10.26 + 10.27 +/** 10.28 + * JDK-8010697: DeletedArrayFilter seems to leak memory 10.29 + * 10.30 + * @test 10.31 + * @run 10.32 + */ 10.33 + 10.34 +var N = 1000; 10.35 + 10.36 +var array = new Array(N); 10.37 +var WeakReferenceArray = Java.type("java.lang.ref.WeakReference[]"); 10.38 +var refArray = new WeakReferenceArray(N); 10.39 + 10.40 +for (var i = 0; i < N; i ++) { 10.41 + var object = new java.lang.Object(); 10.42 + array[i] = object; 10.43 + refArray[i] = new java.lang.ref.WeakReference(object); 10.44 +} 10.45 + 10.46 +object = null; 10.47 + 10.48 +for (var i = 0; i < N; i ++) { 10.49 + delete array[i]; 10.50 +} 10.51 + 10.52 +java.lang.System.gc(); 10.53 +java.lang.System.gc(); 10.54 + 10.55 +for (var i = 0; i < N; i ++) { 10.56 + if (refArray[i].get() != null) { 10.57 + print("Reference found at " + i); 10.58 + exit(0); 10.59 + } 10.60 +} 10.61 + 10.62 +print("All references gone");
11.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 11.2 +++ b/test/script/basic/JDK-8010697.js.EXPECTED Thu Jun 20 17:34:42 2013 +0530 11.3 @@ -0,0 +1,1 @@ 11.4 +All references gone
12.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 12.2 +++ b/test/script/basic/JDK-8015347.js Thu Jun 20 17:34:42 2013 +0530 12.3 @@ -0,0 +1,39 @@ 12.4 +/* 12.5 + * Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved. 12.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 12.7 + * 12.8 + * This code is free software; you can redistribute it and/or modify it 12.9 + * under the terms of the GNU General Public License version 2 only, as 12.10 + * published by the Free Software Foundation. 12.11 + * 12.12 + * This code is distributed in the hope that it will be useful, but WITHOUT 12.13 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 12.14 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 12.15 + * version 2 for more details (a copy is included in the LICENSE file that 12.16 + * accompanied this code). 12.17 + * 12.18 + * You should have received a copy of the GNU General Public License version 12.19 + * 2 along with this work; if not, write to the Free Software Foundation, 12.20 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 12.21 + * 12.22 + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 12.23 + * or visit www.oracle.com if you need additional information or have any 12.24 + * questions. 12.25 + */ 12.26 + 12.27 +/** 12.28 + * JDK-8015347: Parsing issue with decodeURIComponent 12.29 + * 12.30 + * @test 12.31 + * @run 12.32 + */ 12.33 + 12.34 +try { 12.35 + decodeURIComponent("%C0%80"); 12.36 + fail("Should have thrown URIError"); 12.37 +} catch (e) { 12.38 + if (! (e instanceof URIError)) { 12.39 + fail("Expected URIError, but got " + e); 12.40 + } 12.41 +} 12.42 +
13.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 13.2 +++ b/test/script/basic/JDK-8017046.js Thu Jun 20 17:34:42 2013 +0530 13.3 @@ -0,0 +1,46 @@ 13.4 +/* 13.5 + * Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved. 13.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 13.7 + * 13.8 + * This code is free software; you can redistribute it and/or modify it 13.9 + * under the terms of the GNU General Public License version 2 only, as 13.10 + * published by the Free Software Foundation. 13.11 + * 13.12 + * This code is distributed in the hope that it will be useful, but WITHOUT 13.13 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13.14 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 13.15 + * version 2 for more details (a copy is included in the LICENSE file that 13.16 + * accompanied this code). 13.17 + * 13.18 + * You should have received a copy of the GNU General Public License version 13.19 + * 2 along with this work; if not, write to the Free Software Foundation, 13.20 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 13.21 + * 13.22 + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 13.23 + * or visit www.oracle.com if you need additional information or have any 13.24 + * questions. 13.25 + */ 13.26 + 13.27 +/** 13.28 + * JDK-8017046: Cannot assign undefined to a function argument if the function uses arguments object 13.29 + * 13.30 + * @test 13.31 + * @run 13.32 + */ 13.33 + 13.34 +function assert(value, msg) { 13.35 + if (! value) { 13.36 + fail(msg); 13.37 + } 13.38 +} 13.39 + 13.40 +function func(a) { 13.41 + assert(a === arguments[0], "a !== arguments[0]"); 13.42 + assert(a === "hello", "a !== 'hello'"); 13.43 + a = undefined; 13.44 + assert(a === arguments[0], "a !== arguments[0]"); 13.45 + assert(a === undefined, "a !== undefined"); 13.46 + assert(typeof(a) === 'undefined', "typeof(a) is not 'undefined'"); 13.47 +} 13.48 + 13.49 +func("hello");
14.1 --- a/test/src/jdk/nashorn/api/javaaccess/BooleanAccessTest.java Tue Jun 18 16:06:45 2013 +0100 14.2 +++ b/test/src/jdk/nashorn/api/javaaccess/BooleanAccessTest.java Thu Jun 20 17:34:42 2013 +0530 14.3 @@ -39,7 +39,7 @@ 14.4 /** 14.5 * @test 14.6 * @build jdk.nashorn.api.javaaccess.SharedObject jdk.nashorn.api.javaaccess.Person jdk.nashorn.api.javaaccess.BooleanAccessTest 14.7 - * @run testng jdk.nashorn.api.javaaccess.BooleanAccessTest 14.8 + * @run testng/othervm jdk.nashorn.api.javaaccess.BooleanAccessTest 14.9 */ 14.10 public class BooleanAccessTest { 14.11
15.1 --- a/test/src/jdk/nashorn/api/javaaccess/MethodAccessTest.java Tue Jun 18 16:06:45 2013 +0100 15.2 +++ b/test/src/jdk/nashorn/api/javaaccess/MethodAccessTest.java Thu Jun 20 17:34:42 2013 +0530 15.3 @@ -42,7 +42,7 @@ 15.4 /** 15.5 * @test 15.6 * @build jdk.nashorn.api.javaaccess.SharedObject jdk.nashorn.api.javaaccess.Person jdk.nashorn.api.javaaccess.MethodAccessTest 15.7 - * @run testng jdk.nashorn.api.javaaccess.MethodAccessTest 15.8 + * @run testng/othervm jdk.nashorn.api.javaaccess.MethodAccessTest 15.9 */ 15.10 public class MethodAccessTest { 15.11
16.1 --- a/test/src/jdk/nashorn/api/javaaccess/NumberAccessTest.java Tue Jun 18 16:06:45 2013 +0100 16.2 +++ b/test/src/jdk/nashorn/api/javaaccess/NumberAccessTest.java Thu Jun 20 17:34:42 2013 +0530 16.3 @@ -39,7 +39,7 @@ 16.4 /** 16.5 * @test 16.6 * @build jdk.nashorn.api.javaaccess.SharedObject jdk.nashorn.api.javaaccess.Person jdk.nashorn.api.javaaccess.NumberAccessTest 16.7 - * @run testng jdk.nashorn.api.javaaccess.NumberAccessTest 16.8 + * @run testng/othervm jdk.nashorn.api.javaaccess.NumberAccessTest 16.9 */ 16.10 public class NumberAccessTest { 16.11
17.1 --- a/test/src/jdk/nashorn/api/javaaccess/NumberBoxingTest.java Tue Jun 18 16:06:45 2013 +0100 17.2 +++ b/test/src/jdk/nashorn/api/javaaccess/NumberBoxingTest.java Thu Jun 20 17:34:42 2013 +0530 17.3 @@ -38,7 +38,7 @@ 17.4 /** 17.5 * @test 17.6 * @build jdk.nashorn.api.javaaccess.SharedObject jdk.nashorn.api.javaaccess.Person jdk.nashorn.api.javaaccess.NumberBoxingTest 17.7 - * @run testng jdk.nashorn.api.javaaccess.NumberBoxingTest 17.8 + * @run testng/othervm jdk.nashorn.api.javaaccess.NumberBoxingTest 17.9 */ 17.10 public class NumberBoxingTest { 17.11
18.1 --- a/test/src/jdk/nashorn/api/javaaccess/ObjectAccessTest.java Tue Jun 18 16:06:45 2013 +0100 18.2 +++ b/test/src/jdk/nashorn/api/javaaccess/ObjectAccessTest.java Thu Jun 20 17:34:42 2013 +0530 18.3 @@ -38,7 +38,7 @@ 18.4 /** 18.5 * @test 18.6 * @build jdk.nashorn.api.javaaccess.SharedObject jdk.nashorn.api.javaaccess.Person jdk.nashorn.api.javaaccess.ObjectAccessTest 18.7 - * @run testng jdk.nashorn.api.javaaccess.ObjectAccessTest 18.8 + * @run testng/othervm jdk.nashorn.api.javaaccess.ObjectAccessTest 18.9 */ 18.10 public class ObjectAccessTest { 18.11
19.1 --- a/test/src/jdk/nashorn/api/javaaccess/StringAccessTest.java Tue Jun 18 16:06:45 2013 +0100 19.2 +++ b/test/src/jdk/nashorn/api/javaaccess/StringAccessTest.java Thu Jun 20 17:34:42 2013 +0530 19.3 @@ -38,7 +38,7 @@ 19.4 /** 19.5 * @test 19.6 * @build jdk.nashorn.api.javaaccess.SharedObject jdk.nashorn.api.javaaccess.Person jdk.nashorn.api.javaaccess.StringAccessTest 19.7 - * @run testng jdk.nashorn.api.javaaccess.StringAccessTest 19.8 + * @run testng/othervm jdk.nashorn.api.javaaccess.StringAccessTest 19.9 */ 19.10 public class StringAccessTest { 19.11