test/script/trusted/NASHORN-653.js

Thu, 07 Feb 2013 17:17:29 +0530

author
sundar
date
Thu, 07 Feb 2013 17:17:29 +0530
changeset 77
d7e83be6e7aa
parent 7
test/script/basic/NASHORN-653.js@5a1b0714df0e
child 279
1fd18f40ab52
permissions
-rw-r--r--

8007715: Make sure that not all tests run with AllPermission
Reviewed-by: lagergren, attila

     1 /*
     2  * Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved.
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     4  * 
     5  * This code is free software; you can redistribute it and/or modify it
     6  * under the terms of the GNU General Public License version 2 only, as
     7  * published by the Free Software Foundation.
     8  * 
     9  * This code is distributed in the hope that it will be useful, but WITHOUT
    10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
    11  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
    12  * version 2 for more details (a copy is included in the LICENSE file that
    13  * accompanied this code).
    14  * 
    15  * You should have received a copy of the GNU General Public License version
    16  * 2 along with this work; if not, write to the Free Software Foundation,
    17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
    18  * 
    19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
    20  * or visit www.oracle.com if you need additional information or have any
    21  * questions.
    22  */
    24 /**
    25  * NASHORN-653 : Various problems with isTerminal and dead code generation from ASM
    26  *
    27  * @test
    28  * @run
    29  */
    31 var script = "   \
    32 function a() {   \
    33     return true; \
    34 }                \
    35                  \
    36 function b() {   \
    37     while (x) {      \
    38 	return true; \
    39     }                \
    40 }                    \
    41                      \
    42 function c() {       \
    43     while (true) {   \
    44 	return true; \
    45     }                \
    46  }                   \
    47                      \
    48 function d() {       \
    49     do {             \
    50 	return true; \
    51     } while (x);     \
    52 } \
    53 \
    54 function f() {       \
    55     for (;;) {       \
    56 	return true; \
    57     } \
    58 } \
    59 \
    60 function e() { \
    61     for (;;) { \
    62 	return true; \
    63     } \
    64 } \
    65 \
    66 function g() { \
    67     for(;;) { \
    68 	print('goes on and on and on ... '); \
    69     } \
    70     print('x'); \
    71 } \
    72 ";
    74 function runScriptEngine(opts, code) {
    75     var imports = new JavaImporter(
    76         Packages.jdk.nashorn.api.scripting,
    77         java.io, java.lang, java.util);
    79     with(imports) {
    80         var fac = new NashornScriptEngineFactory();
    81         // get current System.err
    82         var oldErr = System.err;
    83         var baos = new ByteArrayOutputStream();
    84         var newErr = new PrintStream(baos);
    85         try {
    86             // set new standard err
    87             System.setErr(newErr);
    88             var strType = Java.type("java.lang.String");
    89             var engine = fac.getScriptEngine(Java.toJavaArray(opts, strType));
    90             engine.eval(code);
    91             newErr.flush();
    92             return new java.lang.String(baos.toByteArray());
    93         } finally {
    94             // restore System.err to old value
    95             System.setErr(oldErr);
    96         }
    97     }
    98 }
   100 var result = runScriptEngine([ "--print-code" ], script);
   102 if (result.indexOf("NOP") != -1) {
   103     fail("ASM genenerates NOP*/ATHROW sequences - dead code is still in the script");
   104 }

mercurial