diff options
author | 2023-09-15 11:22:06 -0400 | |
---|---|---|
committer | 2023-09-15 08:22:06 -0700 | |
commit | 29b22175bf6fc726d0b028c7bf5619ab89fca09a (patch) | |
tree | f0664d677e6cd2d130c76db9fb135402ae2c1110 /src/js/_codegen/static-hash-tables.ts | |
parent | 75697890ce1040d2c2f9bc50499faf54b3205915 (diff) | |
download | bun-29b22175bf6fc726d0b028c7bf5619ab89fca09a.tar.gz bun-29b22175bf6fc726d0b028c7bf5619ab89fca09a.tar.zst bun-29b22175bf6fc726d0b028c7bf5619ab89fca09a.zip |
feat(runtime): add `process.binding` `uv`/`natives`/`config` + make global object properties lazy (#5355)
* binding uv
* we did that
* some more bindings
* fix doc
* fix uv
* yo
* static hash table nonsense <3
* huge refactor to the global object i am not ready for merge conflicts
* it works part 3
* lose
---------
Co-authored-by: Jarred Sumner <jarred@jarredsumner.com>
Diffstat (limited to 'src/js/_codegen/static-hash-tables.ts')
-rw-r--r-- | src/js/_codegen/static-hash-tables.ts | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/src/js/_codegen/static-hash-tables.ts b/src/js/_codegen/static-hash-tables.ts new file mode 100644 index 000000000..be2aa908d --- /dev/null +++ b/src/js/_codegen/static-hash-tables.ts @@ -0,0 +1,42 @@ +// TODO: move this file somewhere else. it doesnt make sense in src/js/ +// it generates C++ code not related to javascript at all +import { spawn } from "bun"; +import path from "../node/path"; + +const STATIC_HASH_TABLES = [ + // + "src/bun.js/bindings/BunObject.cpp", + "src/bun.js/bindings/ZigGlobalObject.lut.txt", + "src/bun.js/bindings/Process.cpp", + "src/bun.js/bindings/ProcessBindingConstants.cpp", + "src/bun.js/bindings/ProcessBindingNatives.cpp", +]; + +console.time("Creating static hash tables..."); +const create_hash_table = path.join(import.meta.dir, "../../../src/bun.js/scripts/create_hash_table"); +if (!create_hash_table) { + console.warn("Could not find create_hash_table executable. Run `bun i` or clone webkit to build static hash tables"); + process.exit(1); +} + +await Promise.all( + STATIC_HASH_TABLES.map(async cpp => { + cpp = path.join(import.meta.dir, "../../../", cpp); + const { stdout, exited } = spawn({ + cmd: [create_hash_table, cpp], + stdout: "pipe", + stderr: "inherit", + }); + await exited; + let str = await new Response(stdout).text(); + str = str.replaceAll(/^\/\/.*$/gm, ""); + str = str.replaceAll(/^#include.*$/gm, ""); + str = str.replaceAll(`namespace JSC {`, ""); + str = str.replaceAll(`} // namespace JSC`, ""); + str = "// File generated via `make static-hash-table` / `make cpp`\n" + str.trim() + "\n"; + await Bun.write(cpp.replace(/\.cpp$/, ".lut.h").replace(/(\.lut)?\.txt$/, ".lut.h"), str); + console.log("Wrote", path.relative(process.cwd(), cpp.replace(/\.cpp$/, ".lut.h"))); + }), +); + +console.timeEnd("Creating static hash tables..."); |