aboutsummaryrefslogtreecommitdiff
path: root/src/codegen/generate-jssink.ts
diff options
context:
space:
mode:
authorGravatar dave caruso <me@paperdave.net> 2023-10-31 17:25:13 -0700
committerGravatar GitHub <noreply@github.com> 2023-10-31 17:25:13 -0700
commit53d1acb0a5655deb69f54bd6f8222a6f4dd27633 (patch)
tree1b28f511d2e1723d4b279b3062ca7cc0c140f092 /src/codegen/generate-jssink.ts
parent23d2c4c8e49a1fdfdf976fb5647b3796450f66b5 (diff)
downloadbun-53d1acb0a5655deb69f54bd6f8222a6f4dd27633.tar.gz
bun-53d1acb0a5655deb69f54bd6f8222a6f4dd27633.tar.zst
bun-53d1acb0a5655deb69f54bd6f8222a6f4dd27633.zip
chore: build system improvements (#6811)
* build system improvements * public the secret download link * typo * i think i fixed it * fix ci * un-bump the cmake version
Diffstat (limited to 'src/codegen/generate-jssink.ts')
-rw-r--r--src/codegen/generate-jssink.ts104
1 files changed, 52 insertions, 52 deletions
diff --git a/src/codegen/generate-jssink.ts b/src/codegen/generate-jssink.ts
index 31a475e0b..f30752c53 100644
--- a/src/codegen/generate-jssink.ts
+++ b/src/codegen/generate-jssink.ts
@@ -484,51 +484,6 @@ JSC_DEFINE_HOST_FUNCTION(${name}__doClose, (JSC::JSGlobalObject * lexicalGlobalO
`;
for (let name of classes) {
- const {
- className,
- controller,
- prototypeName,
- controllerName,
- controllerPrototypeName,
- constructor,
- writableStreamSourcePrototype,
- writableStreamName,
- } = names(name);
- const protopad = `${controller}__close`.length;
- const padding = `${name}__doClose`.length;
- templ += `
-/* Source for JS${name}PrototypeTableValues.lut.h
-@begin JS${name}PrototypeTable
- close ${`${name}__doClose`.padEnd(padding + 8)} ReadOnly|DontDelete|Function 0
- flush ${`${name}__flush`.padEnd(padding + 8)} ReadOnly|DontDelete|Function 1
- end ${`${name}__end`.padEnd(padding + 8)} ReadOnly|DontDelete|Function 0
- start ${`${name}__start`.padEnd(padding + 8)} ReadOnly|DontDelete|Function 1
- write ${`${name}__write`.padEnd(padding + 8)} ReadOnly|DontDelete|Function 1
- ref ${`${name}__ref`.padEnd(padding + 8)} ReadOnly|DontDelete|Function 0
- unref ${`${name}__unref`.padEnd(padding + 8)} ReadOnly|DontDelete|Function 0
-@end
-*/
-
-
-/* Source for ${controllerPrototypeName}TableValues.lut.h
-@begin ${controllerPrototypeName}Table
- close ${`${controller}__close`.padEnd(protopad + 4)} ReadOnly|DontDelete|Function 0
- flush ${`${name}__flush`.padEnd(protopad + 4)} ReadOnly|DontDelete|Function 1
- end ${`${controller}__end`.padEnd(protopad + 4)} ReadOnly|DontDelete|Function 0
- start ${`${name}__start`.padEnd(protopad + 4)} ReadOnly|DontDelete|Function 1
- write ${`${name}__write`.padEnd(protopad + 4)} ReadOnly|DontDelete|Function 1
-@end
-*/
-
- `;
- }
-
- const footer = `
-} // namespace WebCore
-
-`;
-
- for (let name of classes) {
const { className, controller, prototypeName, controllerPrototypeName, constructor, controllerName } = names(name);
templ += `
#pragma mark - ${name}
@@ -854,6 +809,10 @@ default:
}
}`;
+ const footer = `
+} // namespace WebCore
+
+`;
templ += footer;
for (let name of classes) {
@@ -951,14 +910,55 @@ extern "C" void ${name}__onClose(JSC__JSValue controllerValue, JSC__JSValue reas
return templ;
}
+function lutInput() {
+ let templ = "";
+ for (let name of classes) {
+ const { controller, controllerPrototypeName } = names(name);
+ const protopad = `${controller}__close`.length;
+ const padding = `${name}__doClose`.length;
+ templ += `
+/* Source for JS${name}PrototypeTableValues.lut.h
+@begin JS${name}PrototypeTable
+ close ${`${name}__doClose`.padEnd(padding + 8)} ReadOnly|DontDelete|Function 0
+ flush ${`${name}__flush`.padEnd(padding + 8)} ReadOnly|DontDelete|Function 1
+ end ${`${name}__end`.padEnd(padding + 8)} ReadOnly|DontDelete|Function 0
+ start ${`${name}__start`.padEnd(padding + 8)} ReadOnly|DontDelete|Function 1
+ write ${`${name}__write`.padEnd(padding + 8)} ReadOnly|DontDelete|Function 1
+ ref ${`${name}__ref`.padEnd(padding + 8)} ReadOnly|DontDelete|Function 0
+ unref ${`${name}__unref`.padEnd(padding + 8)} ReadOnly|DontDelete|Function 0
+@end
+*/
+
+
+/* Source for ${controllerPrototypeName}TableValues.lut.h
+@begin ${controllerPrototypeName}Table
+ close ${`${controller}__close`.padEnd(protopad + 4)} ReadOnly|DontDelete|Function 0
+ flush ${`${name}__flush`.padEnd(protopad + 4)} ReadOnly|DontDelete|Function 1
+ end ${`${controller}__end`.padEnd(protopad + 4)} ReadOnly|DontDelete|Function 0
+ start ${`${name}__start`.padEnd(protopad + 4)} ReadOnly|DontDelete|Function 1
+ write ${`${name}__write`.padEnd(protopad + 4)} ReadOnly|DontDelete|Function 1
+@end
+*/
+`;
+ }
+
+ return templ;
+}
+
const outDir = resolve(process.argv[2]);
await Bun.write(resolve(outDir + "/JSSink.h"), header());
await Bun.write(resolve(outDir + "/JSSink.cpp"), await implementation());
-
-Bun.spawnSync([
- process.execPath,
- join(import.meta.dir, "create-hash-table.ts"),
- resolve(outDir + "/JSSink.cpp"),
- join(outDir, "JSSink.lut.h"),
-]);
+await Bun.write(resolve(outDir + "/JSSink.lut.txt"), lutInput());
+
+Bun.spawnSync(
+ [
+ process.execPath,
+ join(import.meta.dir, "create-hash-table.ts"),
+ resolve(outDir + "/JSSink.lut.txt"),
+ join(outDir, "JSSink.lut.h"),
+ ],
+ {
+ stdio: ["inherit", "inherit", "inherit"],
+ },
+);