Add --no-prefetch cli flag --no-prefetch will directly use `load(...)` instead of just injecting the script sources which makes it easier to navigate and investigate profiles. - Support more complex command line args and flags - Add --help to cli.js Bug: 411303884 Change-Id: Ica5aaaabf7ce9cc47862af80f5e35cc2ac4b0186 Reviewed-on: https://chromium-review.googlesource.com/c/external/github.com/WebKit/JetStream/+/6483189 Reviewed-by: Victor Gomes <[email protected]> Reviewed-by: Marja Hölttä <[email protected]>
diff --git a/JetStreamDriver.js b/JetStreamDriver.js index 913483e..4ddc421 100644 --- a/JetStreamDriver.js +++ b/JetStreamDriver.js
@@ -202,8 +202,11 @@ } async _loadInternal(url) { - if (!isInBrowser) + if (!isInBrowser) { + if (!globalThis.prefetchResources) + return Promise.resolve(`load("${url}");`); return Promise.resolve(readFile(url)); + } let response; let tries = 3;
diff --git a/cli.js b/cli.js index b87d92c..2b86620 100644 --- a/cli.js +++ b/cli.js
@@ -24,6 +24,8 @@ */ globalThis.isInBrowser = false; +globalThis.prefetchResources = true; + if (typeof console === 'undefined') var console = {} if (typeof console.log === 'undefined') @@ -52,14 +54,33 @@ if (isSpiderMonkey) globalThis.readFile = readRelativeToScript; + +let cliFlags = {}; +let cliArgs = []; + +if (typeof arguments != "undefined" && arguments.length > 0) { + for (const arg of arguments) { + if (arg.startsWith("--")) { + const parts = arg.split("="); + cliFlags[parts[0]] = parts.slice(1).join("="); + } else { + cliArgs.push(arg); + } + } +} + if (typeof testList === "undefined") { - if (typeof arguments != "undefined" && arguments.length > 0) { - testList = arguments.slice(); + if (cliArgs.length > 0) { + testList = cliArgs; } else { testList = undefined; } } +if ("--no-prefetch" in cliFlags || "--noprefetch" in cliFlags) + globalThis.prefetchResources = false + + if (typeof testIterationCount === "undefined") testIterationCount = undefined; @@ -70,6 +91,20 @@ load("./JetStreamDriver.js"); +if ("--help" in cliFlags) { + print("JetStream Driver Help") + print("") + print("Options:") + print(" --no-prefetch: directly use load('...') for benchmark resources.") + print("") + print("Available tests:") + for (const test of testPlans) + print(" ", test.name) +} else { + print("Running tests: " + testList) + runJetStream(); +} + async function runJetStream() { try { await JetStream.initialize(); @@ -78,4 +113,3 @@ console.log("JetStream2 failed: " + e); } } -runJetStream();
diff --git a/index.html b/index.html index b364944..a598ef3 100644 --- a/index.html +++ b/index.html
@@ -36,6 +36,8 @@ const isInBrowser = true; const isD8 = false; const isSpiderMonkey = false; + let prefetchResources = true; + var allIsGood = true; window.onerror = function(e) { if (e == "Script error.") {