./file.mjs" to "file"
  const file = StringPrototypeSlice(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') {
    ArrayPrototypePush(tickArguments, '--mac');
  } else if (process.platform === 'win32') {
    ArrayPrototypePush(tickArguments, '--windows');
  }
  ArrayPrototypePushApply(tickArguments,
                          ArrayPrototypeSlice(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();
})();
