// Copyright 2019 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. // Flags: --expose-gc --stress-runs=1 let script = `onmessage = function(msg) { if (msg.depth > 0) { print("spawn"); let w = new Worker(msg.script, {type : "string"}); w.postMessage({script: msg.script, depth: msg.depth - 1}); let m = w.getMessage(); w.terminate(); postMessage(m); } else { postMessage(-99); } }`; function RunWorker(depth) { let w = new Worker(script, {type : "string"}); let array = new Int32Array([55, -77]); w.postMessage({script: script, depth: depth}); let msg = w.getMessage(); print(msg); w.terminate(); } function RunTest(depth, iterations) { let time = performance.now(); for (let i = 0; i < iterations; i++) { let now = performance.now(); print(`iteration ${i}, Δ = ${(now - time).toFixed(3)} ms`); RunWorker(depth); gc(); time = now; } } // TODO(9524): increase the workload of this test. Runs out of threads // on too many platforms. RunTest(1, 1); RunTest(2, 2); RunTest(5, 3); RunTest(9, 2);