diff --git a/test/fixtures/guess-hash-seed.js b/test/fixtures/guess-hash-seed.js index 8d69cf92490d20..c6166450b4fbb5 100644 --- a/test/fixtures/guess-hash-seed.js +++ b/test/fixtures/guess-hash-seed.js @@ -67,9 +67,6 @@ function hash_to_bucket(hash, numBuckets) { function time_set_lookup(set, value) { const t1 = process.hrtime(); for (let i = 0; i < 100; i++) { - // annoyingly, SetHas() is JS code and therefore potentially optimizable. - // However, SetHas() looks up the table using native code, and it seems like - // that's sufficient to prevent the optimizer from doing anything? set.has(value); } const t = process.hrtime(t1); @@ -78,6 +75,9 @@ function time_set_lookup(set, value) { return secs * 1e9 + nanos; } +// Prevent optimization of SetHas(). +%NeverOptimizeFunction(time_set_lookup); + // Set with 256 buckets; bucket 0 full, others empty const tester_set_buckets = 256; const tester_set = new Set(); diff --git a/test/pummel/test-hash-seed.js b/test/pummel/test-hash-seed.js index 274183d8ce977e..265226e1714fe2 100644 --- a/test/pummel/test-hash-seed.js +++ b/test/pummel/test-hash-seed.js @@ -24,7 +24,14 @@ const requiredCallback = common.mustCall((results) => { assert.strictEqual(seeds.length, kRepetitions); }); -const generateSeed = () => execFilePromise(process.execPath, [targetScript]); +function generateSeed() { + return execFilePromise(process.execPath, [ + // Needed for %NeverOptimizeFunction. + '--allow-natives-syntax', + targetScript, + ]); +} + const subprocesses = [...new Array(kRepetitions)].map(generateSeed); Promise.all(subprocesses)