diff --git a/src/browser/js/Context.zig b/src/browser/js/Context.zig index ee947957..69603345 100644 --- a/src/browser/js/Context.zig +++ b/src/browser/js/Context.zig @@ -166,8 +166,8 @@ pub fn deinit(self: *Context) void { } if (self.handle_scope) |*scope| { - scope.deinit(); v8.v8__Context__Exit(self.handle); + scope.deinit(); } } diff --git a/src/browser/js/Env.zig b/src/browser/js/Env.zig index 7962e66d..4effc3cd 100644 --- a/src/browser/js/Env.zig +++ b/src/browser/js/Env.zig @@ -93,14 +93,10 @@ pub fn init(allocator: Allocator, platform: *const Platform, snapshot: *Snapshot var temp_scope: js.HandleScope = undefined; temp_scope.init(isolate); defer temp_scope.deinit(); - const context_handle = isolate.createContextHandle(null, null); - - v8.v8__Context__Enter(context_handle); - defer v8.v8__Context__Exit(context_handle); inline for (JsApis, 0..) |JsApi, i| { JsApi.Meta.class_id = i; - const data = v8.v8__Context__GetDataFromSnapshotOnce(context_handle, snapshot.data_start + i); + const data = v8.v8__Isolate__GetDataFromSnapshotOnce(isolate.handle, snapshot.data_start + i); const function_handle: *const v8.FunctionTemplate = @ptrCast(data); // Make function template global/persistent v8.v8__Global__New(isolate.handle, @ptrCast(function_handle), &globals[i]); diff --git a/src/browser/js/ExecutionWorld.zig b/src/browser/js/ExecutionWorld.zig index b8bbbf02..bc016c00 100644 --- a/src/browser/js/ExecutionWorld.zig +++ b/src/browser/js/ExecutionWorld.zig @@ -158,6 +158,7 @@ pub fn removeContext(self: *ExecutionWorld) void { self.persisted_context.?.deinit(); self.persisted_context = null; + self.env.isolate.notifyContextDisposed(); _ = self.context_arena.reset(.{ .retain_with_limit = CONTEXT_ARENA_RETAIN }); } diff --git a/src/browser/js/Isolate.zig b/src/browser/js/Isolate.zig index 9b4ae1d1..dcfeb157 100644 --- a/src/browser/js/Isolate.zig +++ b/src/browser/js/Isolate.zig @@ -57,6 +57,10 @@ pub fn lowMemoryNotification(self: Isolate) void { v8.v8__Isolate__LowMemoryNotification(self.handle); } +pub fn notifyContextDisposed(self: Isolate) void { + _ = v8.v8__Isolate__ContextDisposedNotification(self.handle); +} + pub fn getHeapStatistics(self: Isolate) v8.HeapStatistics { var res: v8.HeapStatistics = undefined; v8.v8__Isolate__GetHeapStatistics(self.handle, &res); diff --git a/src/browser/js/Snapshot.zig b/src/browser/js/Snapshot.zig index bd2280d9..410f4771 100644 --- a/src/browser/js/Snapshot.zig +++ b/src/browser/js/Snapshot.zig @@ -179,7 +179,7 @@ pub fn create() !Snapshot { var last_data_index: usize = 0; inline for (JsApis, 0..) |_, i| { @setEvalBranchQuota(10_000); - const data_index = v8.v8__SnapshotCreator__AddData2(snapshot_creator, context, @ptrCast(templates[i])); + const data_index = v8.v8__SnapshotCreator__AddData(snapshot_creator, @ptrCast(templates[i])); if (i == 0) { data_start = data_index; last_data_index = data_index;