aboutsummaryrefslogtreecommitdiff
path: root/src/js/_codegen/static-hash-tables.ts
diff options
context:
space:
mode:
authorGravatar dave caruso <me@paperdave.net> 2023-09-15 11:22:06 -0400
committerGravatar GitHub <noreply@github.com> 2023-09-15 08:22:06 -0700
commit29b22175bf6fc726d0b028c7bf5619ab89fca09a (patch)
treef0664d677e6cd2d130c76db9fb135402ae2c1110 /src/js/_codegen/static-hash-tables.ts
parent75697890ce1040d2c2f9bc50499faf54b3205915 (diff)
downloadbun-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.ts42
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...");