@@ -271,6 +271,58 @@ pub fn Env(comptime State: type, comptime WebApis: type) type {
271
271
self .allocator .destroy (self );
272
272
}
273
273
274
+ pub fn snapshot (self : * Self , default_ctx : * const JsContext ) v8.StartupData {
275
+ self .snapshot_creator .setDefaultContextWithCallbacks (
276
+ default_ctx .v8_context ,
277
+ // SerializeInternalFieldsCallback serializes internal fields
278
+ // of V8 objects that contain embedder data
279
+ .{
280
+ .callback = struct {
281
+ fn callback (holder : ? * v8.C_Object , index : c_int , data : ? * anyopaque ) callconv (.C ) v8.StartupData {
282
+ _ = holder ;
283
+ _ = index ;
284
+ _ = data ;
285
+ // TODO
286
+ std .debug .print ("SerializeInternalFieldsCallback\n " , .{});
287
+ return .{};
288
+ }
289
+ }.callback ,
290
+ .data = null ,
291
+ },
292
+ // SerializeContextDataCallback serializes context-specific
293
+ // state (globals, modules, etc.)
294
+ .{
295
+ .callback = struct {
296
+ fn callback (context : ? * v8.C_Context , index : c_int , data : ? * anyopaque ) callconv (.C ) v8.StartupData {
297
+ _ = context ;
298
+ _ = index ;
299
+ _ = data ;
300
+ // TODO
301
+ std .debug .print ("SerializeContextDataCallback\n " , .{});
302
+ return .{};
303
+ }
304
+ }.callback ,
305
+ .data = null ,
306
+ },
307
+ // SerializeAPIWrapperCallback serializes API wrappers that
308
+ // bridge V8 and Native objects
309
+ .{
310
+ .callback = struct {
311
+ fn callback (holder : ? * v8.C_Object , ptr : ? * anyopaque , data : ? * anyopaque ) callconv (.C ) v8.StartupData {
312
+ _ = holder ;
313
+ _ = ptr ;
314
+ _ = data ;
315
+ // TODO
316
+ std .debug .print ("SerializeAPIWrapperCallback\n " , .{});
317
+ return .{};
318
+ }
319
+ }.callback ,
320
+ .data = null ,
321
+ },
322
+ );
323
+ return self .snapshot_creator .createBlob ();
324
+ }
325
+
274
326
pub fn newInspector (self : * Self , arena : Allocator , ctx : anytype ) ! Inspector {
275
327
return Inspector .init (arena , self .isolate , ctx );
276
328
}
0 commit comments