From de999f78abe8a464b59bf5af6e1de03d45cf0162 Mon Sep 17 00:00:00 2001 From: Zack Radisic <56137411+zackradisic@users.noreply.github.com> Date: Fri, 26 Sep 2025 02:04:35 -0700 Subject: [PATCH] resolve more comments --- src/bake/DevServer.zig | 8 ++++---- src/bun.js/api/server/AnyRequestContext.zig | 12 ++++-------- src/bun.js/bindings/BakeAdditionsToGlobalObject.cpp | 6 ++++-- 3 files changed, 12 insertions(+), 14 deletions(-) diff --git a/src/bake/DevServer.zig b/src/bake/DevServer.zig index 0e7c67afb2..6a6208222c 100644 --- a/src/bake/DevServer.zig +++ b/src/bake/DevServer.zig @@ -276,7 +276,7 @@ const DeferredPromise = struct { self.route_bundle_indices.clearRetainingCapacity(); } - pub fn deinit(self: *DeferredPromise) void { + pub fn deinitIdempotently(self: *DeferredPromise) void { self.strong.deinit(); self.route_bundle_indices.deinit(bun.default_allocator); self.route_bundle_indices = .{}; @@ -674,7 +674,7 @@ pub fn deinit(dev: *DevServer) void { r = request.next; } dev.next_bundle.route_queue.deinit(alloc); - dev.next_bundle.promise.deinit(); + dev.next_bundle.promise.deinitIdempotently(); }, .route_lookup = dev.route_lookup.deinit(alloc), .source_maps = { @@ -2201,7 +2201,7 @@ pub fn finalizeBundle( defer { var heap = bv2.graph.heap; bv2.deinitWithoutFreeingArena(); - if (dev.current_bundle) |*cb| cb.promise.deinit(); + if (dev.current_bundle) |*cb| cb.promise.deinitIdempotently(); dev.current_bundle = null; dev.log.clearAndFree(); heap.deinit(); @@ -2946,7 +2946,7 @@ pub fn finalizeBundle( } if (current_bundle.promise.strong.hasValue()) { - defer current_bundle.promise.deinit(); + defer current_bundle.promise.deinitIdempotently(); current_bundle.promise.setRouteBundleState(dev, .loaded); dev.vm.eventLoop().enter(); current_bundle.promise.strong.resolve(dev.vm.global, JSValue.true); diff --git a/src/bun.js/api/server/AnyRequestContext.zig b/src/bun.js/api/server/AnyRequestContext.zig index e0e85777e9..8c18447858 100644 --- a/src/bun.js/api/server/AnyRequestContext.zig +++ b/src/bun.js/api/server/AnyRequestContext.zig @@ -23,29 +23,25 @@ pub fn setAdditionalOnAbortCallback(self: AnyRequestContext, cb: ?AdditionalOnAb return; } - var old: ?AdditionalOnAbortCallback = null; switch (self.tagged_pointer.tag()) { @field(Pointer.Tag, bun.meta.typeBaseName(@typeName(HTTPServer.RequestContext))) => { - old = self.tagged_pointer.as(HTTPServer.RequestContext).additional_on_abort; + bun.assert(self.tagged_pointer.as(HTTPServer.RequestContext).additional_on_abort == null); self.tagged_pointer.as(HTTPServer.RequestContext).additional_on_abort = cb; }, @field(Pointer.Tag, bun.meta.typeBaseName(@typeName(HTTPSServer.RequestContext))) => { - old = self.tagged_pointer.as(HTTPSServer.RequestContext).additional_on_abort; + bun.assert(self.tagged_pointer.as(HTTPSServer.RequestContext).additional_on_abort == null); self.tagged_pointer.as(HTTPSServer.RequestContext).additional_on_abort = cb; }, @field(Pointer.Tag, bun.meta.typeBaseName(@typeName(DebugHTTPServer.RequestContext))) => { - old = self.tagged_pointer.as(DebugHTTPServer.RequestContext).additional_on_abort; + bun.assert(self.tagged_pointer.as(DebugHTTPServer.RequestContext).additional_on_abort == null); self.tagged_pointer.as(DebugHTTPServer.RequestContext).additional_on_abort = cb; }, @field(Pointer.Tag, bun.meta.typeBaseName(@typeName(DebugHTTPSServer.RequestContext))) => { - old = self.tagged_pointer.as(DebugHTTPSServer.RequestContext).additional_on_abort; + bun.assert(self.tagged_pointer.as(DebugHTTPSServer.RequestContext).additional_on_abort == null); self.tagged_pointer.as(DebugHTTPSServer.RequestContext).additional_on_abort = cb; }, else => @panic("Unexpected AnyRequestContext tag"), } - if (old != null) { - old.?.deref(); - } } pub fn memoryCost(self: AnyRequestContext) usize { diff --git a/src/bun.js/bindings/BakeAdditionsToGlobalObject.cpp b/src/bun.js/bindings/BakeAdditionsToGlobalObject.cpp index bd4cc13e2c..84831ba8f9 100644 --- a/src/bun.js/bindings/BakeAdditionsToGlobalObject.cpp +++ b/src/bun.js/bindings/BakeAdditionsToGlobalObject.cpp @@ -1,5 +1,6 @@ #include "BakeAdditionsToGlobalObject.h" #include "JSBakeResponse.h" +#include "JSBunRequest.h" #include "JavaScriptCore/SlotVisitorMacros.h" #include "ErrorCode.h" @@ -103,9 +104,9 @@ BUN_DEFINE_HOST_FUNCTION(jsFunctionBakeGetBundleNewRouteJSFunction, (JSC::JSGlob return JSValue::encode(jsUndefined()); } - JSRequest* request = jsDynamicCast(requestValue); + JSBunRequest* request = jsDynamicCast(requestValue); if (!request) { - Bun::throwError(globalObject, scope, ErrorCode::ERR_INVALID_ARG_TYPE, "request must be a JSRequest"_s); + Bun::throwError(globalObject, scope, ErrorCode::ERR_INVALID_ARG_TYPE, "request must be a JSBunRequest"_s); return JSValue::encode(jsUndefined()); } @@ -116,6 +117,7 @@ BUN_DEFINE_HOST_FUNCTION(jsFunctionBakeGetBundleNewRouteJSFunction, (JSC::JSGlob } BunString url = Bun::toString(urlValue.getString(globalObject)); + RETURN_IF_EXCEPTION(scope, JSC::JSValue::encode(jsUndefined())); return Bake__bundleNewRouteJSFunctionImpl(globalObject, request->m_ctx, url); }