Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/openjdk-multiarch-jdk8u
Path: blob/aarch64-shenandoah-jdk8u272-b10/nashorn/test/script/trusted/NASHORN-653.js
32284 views
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
*/
23
24
/**
25
* NASHORN-653 : Various problems with isTerminal and dead code generation from ASM
26
*
27
* @test
28
* @run
29
*/
30
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
";
73
74
function runScriptEngine(opts, code) {
75
var imports = new JavaImporter(
76
Packages.jdk.nashorn.api.scripting,
77
java.io, java.lang, java.util);
78
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 engine = fac.getScriptEngine(Java.to(opts, "java.lang.String[]"));
89
engine.eval(code);
90
newErr.flush();
91
return new java.lang.String(baos.toByteArray());
92
} finally {
93
// restore System.err to old value
94
System.setErr(oldErr);
95
}
96
}
97
}
98
99
var result = runScriptEngine([ "--print-code" ], script);
100
101
if (result.indexOf("NOP") != -1) {
102
fail("ASM genenerates NOP*/ATHROW sequences - dead code is still in the script");
103
}
104
105