aboutsummaryrefslogtreecommitdiff
path: root/src/js/builtins/codegen
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <jarred@jarredsumner.com> 2023-07-09 16:33:49 -0700
committerGravatar GitHub <noreply@github.com> 2023-07-09 16:33:49 -0700
commitca42c820d29400d8bd93f493064db029f6d4420d (patch)
tree7d05580229fbab45a9fa54bec19d320d16a76ce2 /src/js/builtins/codegen
parent565d1689e9f2c1f6b657f14b07fa9b95e50a5a56 (diff)
downloadbun-ca42c820d29400d8bd93f493064db029f6d4420d.tar.gz
bun-ca42c820d29400d8bd93f493064db029f6d4420d.tar.zst
bun-ca42c820d29400d8bd93f493064db029f6d4420d.zip
Implement nearly all of `process` object methods and properties (#3581)
* Add special case * Make process object load faster * Fix openStdin --------- Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com>
Diffstat (limited to 'src/js/builtins/codegen')
-rw-r--r--src/js/builtins/codegen/index.ts30
1 files changed, 30 insertions, 0 deletions
diff --git a/src/js/builtins/codegen/index.ts b/src/js/builtins/codegen/index.ts
index e20601a15..a5d3c2dc8 100644
--- a/src/js/builtins/codegen/index.ts
+++ b/src/js/builtins/codegen/index.ts
@@ -3,7 +3,35 @@ import path from "path";
import { sliceSourceCode } from "./builtin-parser";
import { applyGlobalReplacements, enums, globalsToPrefix } from "./replacements";
import { cap, fmtCPPString, low } from "./helpers";
+import { spawn, spawnSync } from "bun";
+
+async function createStaticHashtables() {
+ const STATIC_HASH_TABLES = ["src/bun.js/bindings/Process.cpp"];
+ console.time("Creating static hash tables...");
+ const create_hash_table = path.join(
+ import.meta.dir,
+ "../../../../bun-webkit/Source/JavaScriptCore/create_hash_table",
+ );
+ for (let cpp of STATIC_HASH_TABLES) {
+ 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 generate-builtins`\n" + str.trim() + "\n";
+ await Bun.write(cpp.replace(/\.cpp$/, ".lut.h"), str);
+ }
+ console.timeEnd("Creating static hash tables...");
+}
+const staticHashTablePromise = createStaticHashtables();
console.log("Bundling Bun builtins...");
const MINIFY = process.argv.includes("--minify") || process.argv.includes("-m");
@@ -618,6 +646,8 @@ if (!KEEP_TMP) {
await rmSync(TMP_DIR, { recursive: true });
}
+await staticHashTablePromise;
+
console.log(
`Embedded JS size: %s bytes (across %s functions, %s files)`,
totalJSSize,