UNPKG

nstdlib-nightly

Version:

Node.js standard library converted to runtime-agnostic ES modules.

53 lines (45 loc) 1.66 kB
// Source: https://github.com/nodejs/node/blob/65eff1eb/lib/internal/v8_prof_processor.js import { Buffer as Buffer } from "nstdlib/lib/buffer"; import * as console from "nstdlib/lib/internal/console/global"; import * as vm from "nstdlib/lib/vm"; import { SourceTextModule } from "nstdlib/lib/internal/vm/module"; import { natives } from "nstdlib/stub/binding/builtins"; async function linker(specifier, referencingModule) { // Transform "./file.mjs" to "file" const file = String.prototype.slice.call(specifier, 2, -4); const code = natives[`internal/deps/v8/tools/${file}`]; return new SourceTextModule(code, { context: referencingModule.context }); } (async () => { const tickArguments = []; if (process.platform === "darwin") { Array.prototype.push.call(tickArguments, "--mac"); } else if (process.platform === "win32") { Array.prototype.push.call(tickArguments, "--windows"); } Array.prototype.push.apply( tickArguments, Array.prototype.slice.call(process.argv, 1), ); const context = vm.createContext({ arguments: tickArguments, write(s) { process.stdout.write(s); }, printErr(err) { console.error(err); }, console, process, Buffer, }); const polyfill = natives["internal/v8_prof_polyfill"]; const script = `(function(module, require) { ${polyfill} })`; vm.runInContext(script, context)(module, require); const tickProcessor = natives["internal/deps/v8/tools/tickprocessor-driver"]; const tickprocessorDriver = new SourceTextModule(tickProcessor, { context }); await tickprocessorDriver.link(linker); await tickprocessorDriver.evaluate(); })();