(function(global) { let counter = 0; // Spins up a new profiler and performs some work in a new top-level task, // calling some builtins. Returns a promise for the resulting trace. const profileBuiltinsInNewTask = () => { // Run profiling logic in a new task to eliminate the caller stack. return new Promise(resolve => { setTimeout(async () => { const profiler = new Profiler({ sampleInterval: 10, maxBufferSize: 10000 }); for (const deadline = performance.now() + 500; performance.now() < deadline;) { // Run a range of builtins to ensure they get included in the trace. // Store this computation in a variable to prevent getting optimized out. counter += Math.random(); counter += performance.now(); } const trace = await profiler.stop(); resolve(trace); }); }); } global.ProfilingScript = { profileBuiltinsInNewTask, } })(window);