aboutsummaryrefslogtreecommitdiff
path: root/src/javascript/jsc/api/bun.zig
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <jarred@jarredsumner.com> 2022-03-26 20:35:37 -0700
committerGravatar Jarred Sumner <jarred@jarredsumner.com> 2022-03-26 20:35:37 -0700
commit29a759a65512278f1c20d1089ba05dbae268ef24 (patch)
tree8f922320d54f6a99639bcfe8b53d971cab6a029c /src/javascript/jsc/api/bun.zig
parentb54a51adb96b3eea6aacff4f83f3ac39ddbc933e (diff)
downloadbun-29a759a65512278f1c20d1089ba05dbae268ef24.tar.gz
bun-29a759a65512278f1c20d1089ba05dbae268ef24.tar.zst
bun-29a759a65512278f1c20d1089ba05dbae268ef24.zip
improve performance of accessing `Bun.Transpiler` and `Bun.unsafe`
Diffstat (limited to 'src/javascript/jsc/api/bun.zig')
-rw-r--r--src/javascript/jsc/api/bun.zig40
1 files changed, 36 insertions, 4 deletions
diff --git a/src/javascript/jsc/api/bun.zig b/src/javascript/jsc/api/bun.zig
index acb8daf2b..0eaab1dbb 100644
--- a/src/javascript/jsc/api/bun.zig
+++ b/src/javascript/jsc/api/bun.zig
@@ -1165,7 +1165,15 @@ pub fn getTranspilerConstructor(
_: js.JSStringRef,
_: js.ExceptionRef,
) js.JSValueRef {
- return Transpiler.Constructor.constructor(ctx);
+ var existing = ctx.ptr().getCachedObject(&ZigString.init("BunTranspiler"));
+ if (existing.isEmpty()) {
+ return ctx.ptr().putCachedObject(
+ &ZigString.init("BunTranspiler"),
+ JSC.JSValue.fromRef(Transpiler.Constructor.constructor(ctx)),
+ ).asObjectRef();
+ }
+
+ return existing.asObjectRef();
}
pub fn getTOMLObject(
@@ -1175,7 +1183,15 @@ pub fn getTOMLObject(
_: js.JSStringRef,
_: js.ExceptionRef,
) js.JSValueRef {
- return js.JSObjectMake(ctx, TOML.Class.get().?[0], null);
+ var existing = ctx.ptr().getCachedObject(&ZigString.init("TOML"));
+ if (existing.isEmpty()) {
+ return ctx.ptr().putCachedObject(
+ &ZigString.init("TOML"),
+ JSValue.fromRef(js.JSObjectMake(ctx, TOML.Class.get().?[0], null)),
+ ).asObjectRef();
+ }
+
+ return existing.asObjectRef();
}
pub fn getUnsafe(
@@ -1185,7 +1201,15 @@ pub fn getUnsafe(
_: js.JSStringRef,
_: js.ExceptionRef,
) js.JSValueRef {
- return js.JSObjectMake(ctx, Unsafe.Class.get().?[0], null);
+ var existing = ctx.ptr().getCachedObject(&ZigString.init("Unsafe"));
+ if (existing.isEmpty()) {
+ return ctx.ptr().putCachedObject(
+ &ZigString.init("Unsafe"),
+ JSValue.fromRef(js.JSObjectMake(ctx, Unsafe.Class.get().?[0], null)),
+ ).asObjectRef();
+ }
+
+ return existing.asObjectRef();
}
pub const Unsafe = struct {
@@ -1630,7 +1654,15 @@ pub const EnvironmentVariables = struct {
_: js.JSStringRef,
_: js.ExceptionRef,
) js.JSValueRef {
- return js.JSObjectMake(ctx, EnvironmentVariables.Class.get().*, null);
+ var existing = ctx.ptr().getCachedObject(&ZigString.init("Bun.env"));
+ if (existing.isEmpty()) {
+ return ctx.ptr().putCachedObject(
+ &ZigString.init("Bun.env"),
+ JSValue.fromRef(js.JSObjectMake(ctx, EnvironmentVariables.Class.get().*, null)),
+ ).asObjectRef();
+ }
+
+ return existing.asObjectRef();
}
pub const BooleanString = struct {