--- old/test/nashorn/script/basic/run-octane.js 2020-04-15 19:17:20.000000000 +0530 +++ /dev/null 2020-04-15 19:17:20.000000000 +0530 @@ -1,282 +0,0 @@ -/* - * Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -/** - * @subtest - */ -var dir = typeof(__DIR__) == 'undefined' ? "test/script/basic/" : __DIR__; -load(dir + "octane-payload.js"); - -var runtime = undefined; -var verbose = false; - -var numberOfIterations = 5; - -function endsWith(str, suffix) { - return str.indexOf(suffix, str.length - suffix.length) !== -1; -} - -function should_compile_only(name) { - return (typeof compile_only !== 'undefined') -} - -function load_bench(arg) { - - for (var idx = 0; idx < arg.files.length; idx++) { - var f = arg.files[idx]; - var file = f.split('/'); - var file_name = path + file[file.length - 1]; - - var compile_and_return = should_compile_only(file_name); - if (compile_and_return) { - if (typeof compile_only === 'undefined') { //for a run, skip compile onlies, don't even compile them - return true; - } - } - - print_verbose(arg, "loading '" + arg.name + "' [" + f + "]... " + file_name); - load(file_name); - } - - if (typeof arg.before !== 'undefined') { - arg.before(); - } - - if (compile_and_return) { - print_always(arg, "Compiled OK"); - } - return !compile_and_return; - -} - - -function run_one_benchmark(arg, iters) { - - if (!load_bench(arg)) { - return; - } - - var success = true; - var current_name; - - if (iters == undefined) { - iters = numberOfIterations; - } else { - numberOfIterations = iters; - } - - var benchmarks = eval(arg.suite + ".benchmarks"); - var min_score = 1e9; - var max_score = 0; - var mean_score = 0; - - try { - for (var x = 0; x < benchmarks.length ; x++) { - //do warmup run - //reset random number generator needed as of octane 9 before each run - BenchmarkSuite.ResetRNG(); - benchmarks[x].Setup(); - } - BenchmarkSuite.ResetRNG(); - print_verbose(arg, "running '" + arg.name + "' for " + iters + " iterations of no less than " + min_time + " seconds"); - - var scores = []; - - var min_time_ms = min_time * 1000; - var len = benchmarks.length; - - for (var it = 0; it < iters + 1; it++) { - //every iteration must take a minimum of 10 secs - var ops = 0; - var elapsed = 0; - var start = new Date; - do { - for (var i = 0; i < len; i++) { - benchmarks[i].run(); - //important - no timing here like elapsed = new Date() - start, as in the - //original harness. This will make timing very non-deterministic. - //NOTHING else must live in this loop - } - ops += len; - elapsed = new Date - start; - } while (elapsed < min_time * 1000); - - var score = ops / elapsed * 1000 * 60; - scores.push(score); - var name = it == 0 ? "warmup" : "iteration " + it; - print_verbose(arg, name + " finished " + score.toFixed(0) + " ops/minute"); - - // optional per-iteration cleanup hook - if (typeof arg.cleanUpIteration == "function") { - arg.cleanUpIteration(); - } - } - - for (var x = 0; x < benchmarks.length ; x++) { - benchmarks[x].TearDown(); - } - - for (var x = 1; x < iters + 1 ; x++) { - mean_score += scores[x]; - min_score = Math.min(min_score, scores[x]); - max_score = Math.max(max_score, scores[x]); - } - mean_score /= iters; - } catch (e) { - print_always(arg, "*** Aborted and setting score to zero. Reason: " + e); - if (is_this_nashorn() && e instanceof java.lang.Throwable) { - e.printStackTrace(); - } - mean_score = min_score = max_score = 0; - scores = [0]; - } - - var res = mean_score.toFixed(0); - if (verbose) { - res += " ops/minute (" + min_score.toFixed(0) + "-" + max_score.toFixed(0) + "), warmup=" + scores[0].toFixed(0); - } - print_always(arg, res); -} - -function runtime_string() { - return runtime == undefined ? "" : ("[" + runtime + "] "); -} - -function print_always(arg, x) { - print(runtime_string() + "[" + arg.name + "] " + x); -} - -function print_verbose(arg, x) { - if (verbose) { - print_always(arg, x) - } -} - -function run_suite(tests, iters) { - for (var idx = 0; idx < tests.length; idx++) { - run_one_benchmark(tests[idx], iters); - } -} - -var args = []; - -if (typeof $ARGS !== 'undefined') { - args = $ARGS; -} else if (typeof arguments !== 'undefined' && arguments.length != 0) { - args = arguments; -} - -var new_args = []; -for (i in args) { - if (args[i].toString().indexOf(' ') != -1) { - args[i] = args[i].replace(/\/$/, ''); - var s = args[i].split(' '); - for (j in s) { - new_args.push(s[j]); - } - } else { - new_args.push(args[i]); - } -} - -if (new_args.length != 0) { - args = new_args; -} - -var tests_found = []; -var iters = undefined; -var min_time = 5; - -for (var i = 0; i < args.length; i++) { - arg = args[i]; - if (arg == "--iterations") { - iters = +args[++i]; - if (isNaN(iters)) { - throw "'--iterations' must be followed by integer"; - } - } else if (arg == "--runtime") { - runtime = args[++i]; - } else if (arg == "--verbose") { - verbose = true; - } else if (arg == "--min-time") { - min_time = +args[++i]; - if (isNaN(iters)) { - throw "'--min-time' must be followed by integer"; - } - } else if (arg == "") { - continue; //skip - } else { - var found = false; - for (j in tests) { - if (tests[j].name === arg) { - tests_found.push(tests[j]); - found = true; - break; - } - } - if (!found) { - var str = "unknown test name: '" + arg + "' -- valid names are: "; - for (j in tests) { - if (j != 0) { - str += ", "; - } - str += "'" + tests[j].name + "'"; - } - throw str; - } - } -} - -if (tests_found.length == 0) { - for (i in tests) { - tests_found.push(tests[i]); - } -} - -// returns false for rhino, v8 and all other javascript runtimes, true for Nashorn -function is_this_nashorn() { - return typeof Error.dumpStack == 'function' -} - -if (is_this_nashorn()) { - try { - read = readFully; - } catch (e) { - print("ABORTING: Cannot find 'readFully'. You must have scripting enabled to use this test harness. (-scripting)"); - throw e; - } -} - -// run tests in alphabetical order by name -tests_found.sort(function(a, b) { - if (a.name < b.name) { - return -1; - } else if (a.name > b.name) { - return 1; - } else { - return 0; - } -}); - -load(path + 'base.js'); -run_suite(tests_found, iters);