| Index: include/v8.h | 
| diff --git a/include/v8.h b/include/v8.h | 
| index 19b8e2c701f11bf66b595306d89127a960159172..3c503d0c06ed3ff52370ac92c889821b3755aa1d 100644 | 
| --- a/include/v8.h | 
| +++ b/include/v8.h | 
| @@ -6281,17 +6281,33 @@ class V8_EXPORT EmbedderHeapTracer { | 
| }; | 
|  | 
| /** | 
| - * Callback to the embedder used in SnapshotCreator to handle internal fields. | 
| - */ | 
| -typedef StartupData (*SerializeInternalFieldsCallback)(Local<Object> holder, | 
| -                                                       int index); | 
| + * Callback and supporting data used in SnapshotCreator to implement embedder | 
| + * logic to serialize internal fields. | 
| + */ | 
| +struct SerializeInternalFieldsCallback { | 
| +  typedef StartupData (*CallbackFunction)(Local<Object> holder, int index, | 
| +                                          void* data); | 
| +  SerializeInternalFieldsCallback(CallbackFunction function = nullptr, | 
| +                                  void* data_arg = nullptr) | 
| +      : callback(function), data(data_arg) {} | 
| +  CallbackFunction callback; | 
| +  void* data; | 
| +}; | 
|  | 
| /** | 
| - * Callback to the embedder used to deserialize internal fields. | 
| + * Callback and supporting data used to implement embedder logic to deserialize | 
| + * internal fields. | 
| */ | 
| -typedef void (*DeserializeInternalFieldsCallback)(Local<Object> holder, | 
| -                                                  int index, | 
| -                                                  StartupData payload); | 
| +struct DeserializeInternalFieldsCallback { | 
| +  typedef void (*CallbackFunction)(Local<Object> holder, int index, | 
| +                                   StartupData payload, void* data); | 
| +  DeserializeInternalFieldsCallback(CallbackFunction function = nullptr, | 
| +                                    void* data_arg = nullptr) | 
| +      : callback(function), data(data_arg) {} | 
| +  void (*callback)(Local<Object> holder, int index, StartupData payload, | 
| +                   void* data); | 
| +  void* data; | 
| +}; | 
|  | 
| /** | 
| * Isolate represents an isolated instance of the V8 engine.  V8 isolates have | 
| @@ -7688,7 +7704,8 @@ class V8_EXPORT SnapshotCreator { | 
| * \returns the index of the context in the snapshot blob. | 
| */ | 
| size_t AddContext(Local<Context> context, | 
| -                    SerializeInternalFieldsCallback callback = nullptr); | 
| +                    SerializeInternalFieldsCallback callback = | 
| +                        SerializeInternalFieldsCallback()); | 
|  | 
| /** | 
| * Add a template to be included in the snapshot blob. | 
| @@ -8028,7 +8045,8 @@ class V8_EXPORT Context { | 
|  | 
| static MaybeLocal<Context> FromSnapshot( | 
| Isolate* isolate, size_t context_snapshot_index, | 
| -      DeserializeInternalFieldsCallback internal_fields_deserializer = nullptr, | 
| +      DeserializeInternalFieldsCallback internal_fields_deserializer = | 
| +          DeserializeInternalFieldsCallback(), | 
| ExtensionConfiguration* extensions = nullptr, | 
| MaybeLocal<Value> global_object = MaybeLocal<Value>()); | 
|  | 
|  |