1'use strict'; 2 3const { 4 JSONStringify, 5} = primordials; 6 7const vm = require('vm'); 8 9const scriptFiles = [ 10 'internal/v8_prof_polyfill', 11 'internal/deps/v8/tools/splaytree', 12 'internal/deps/v8/tools/codemap', 13 'internal/deps/v8/tools/csvparser', 14 'internal/deps/v8/tools/consarray', 15 'internal/deps/v8/tools/profile', 16 'internal/deps/v8/tools/profile_view', 17 'internal/deps/v8/tools/logreader', 18 'internal/deps/v8/tools/arguments', 19 'internal/deps/v8/tools/tickprocessor', 20 'internal/deps/v8/tools/SourceMap', 21 'internal/deps/v8/tools/tickprocessor-driver' 22]; 23let script = ''; 24 25scriptFiles.forEach((s) => { 26 script += internalBinding('natives')[s] + '\n'; 27}); 28 29const tickArguments = []; 30if (process.platform === 'darwin') { 31 tickArguments.push('--mac'); 32} else if (process.platform === 'win32') { 33 tickArguments.push('--windows'); 34} 35tickArguments.push.apply(tickArguments, process.argv.slice(1)); 36script = `(function(module, require) { 37 arguments = ${JSONStringify(tickArguments)}; 38 function write (s) { process.stdout.write(s) } 39 function printErr(err) { console.error(err); } 40 ${script} 41})`; 42vm.runInThisContext(script)(module, require); 43