| // Copyright 2018 the V8 project authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style license that can be | |
| // found in the LICENSE file. | |
| // Wrapper loading javascript tests passed as arguments used by gc fuzzer. | |
| // It ignores all exceptions and run tests in a separate namespaces. | |
| // | |
| // It can't prevent %AbortJS function from aborting execution, so it should be | |
| // used with d8's --disable-abortjs flag to ignore all possible errors inside | |
| // tests. | |
| // We use -- as an additional separator for test preamble files and test files. | |
| // The preamble files (before --) will be loaded in each realm before each | |
| // test. | |
| var separator = arguments.indexOf("--") | |
| var preamble = arguments.slice(0, separator) | |
| var tests = arguments.slice(separator + 1) | |
| var preambleString = "" | |
| for (let jstest of preamble) { | |
| preambleString += "load(\"" + jstest + "\");" | |
| } | |
| for (let jstest of tests) { | |
| print("Loading " + jstest); | |
| let start = performance.now(); | |
| // anonymous function to not populate global namespace. | |
| (function () { | |
| let realm = Realm.create(); | |
| try { | |
| Realm.eval(realm, preambleString + "load(\"" + jstest + "\");"); | |
| } catch (err) { | |
| // ignore all errors | |
| } | |
| Realm.dispose(realm); | |
| })(); | |
| let durationSec = ((performance.now() - start) / 1000.0).toFixed(2); | |
| print("Duration " + durationSec + "s"); | |
| } |