summaryrefslogtreecommitdiff
path: root/deps/v8/tools/testrunner/trycatch_loader.js
blob: 737c8e45dbe202a3ba4453b828ef8fcd014635fb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
// 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");
}