diff options
Diffstat (limited to 'tools/bench/rebootstrap.js')
-rw-r--r-- | tools/bench/rebootstrap.js | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/tools/bench/rebootstrap.js b/tools/bench/rebootstrap.js new file mode 100644 index 000000000..b85276ef3 --- /dev/null +++ b/tools/bench/rebootstrap.js @@ -0,0 +1,25 @@ +import { dirname, fromFileUrl, join } from "https://deno.land/std/path/mod.ts"; +import { expandGlobSync } from "https://deno.land/std/fs/mod.ts"; + +const ROOT_DIR = join(dirname(fromFileUrl(import.meta.url)), "..", ".."); + +export function rebootstrap(exts) { + [ + "core/00_primordials.js", + ...exts.map((e) => `ext/${e}/*.js`), + ] + .map((pattern) => join(ROOT_DIR, pattern)) + .map((pattern) => [...expandGlobSync(pattern)]) + .flat() + .map((entry) => entry.path) + .forEach((file) => { + Deno.core.evalContext(Deno.readTextFileSync(file), file); + }); + const bootstrap = globalThis.__bootstrap; + delete globalThis.__bootstrap; + // Patch dispatchEvent so we don't crash when MainWorker exits via: + // `window.dispatchEvent(new Event('unload'))` + // which fails since symbols are mangled during rebootstrap + globalThis.dispatchEvent = () => {}; + return bootstrap; +} |