@@ -423,6 +423,39 @@ void v8__Isolate__EnqueueMicrotaskFunc(v8::Isolate* self, const v8::Function* fu
423423 self->EnqueueMicrotask (ptr_to_local (function));
424424}
425425
426+ // MicrotaskQueue
427+
428+ v8::MicrotaskQueue* v8__MicrotaskQueue__New (
429+ v8::Isolate* isolate,
430+ v8::MicrotasksPolicy policy) {
431+ return v8::MicrotaskQueue::New (isolate, policy).release ();
432+ }
433+
434+ void v8__MicrotaskQueue__DELETE (v8::MicrotaskQueue* self) {
435+ delete self;
436+ }
437+
438+ void v8__MicrotaskQueue__PerformCheckpoint (
439+ v8::MicrotaskQueue* self,
440+ v8::Isolate* isolate) {
441+ self->PerformCheckpoint (isolate);
442+ }
443+
444+ void v8__MicrotaskQueue__EnqueueMicrotask (
445+ v8::MicrotaskQueue* self,
446+ v8::Isolate* isolate,
447+ v8::MicrotaskCallback callback,
448+ void * data) {
449+ self->EnqueueMicrotask (isolate, callback, data);
450+ }
451+
452+ void v8__MicrotaskQueue__EnqueueMicrotaskFunc (
453+ v8::MicrotaskQueue* self,
454+ v8::Isolate* isolate,
455+ const v8::Function* function) {
456+ self->EnqueueMicrotask (isolate, ptr_to_local (function));
457+ }
458+
426459const v8::Data* v8__Isolate__GetDataFromSnapshotOnce (v8::Isolate *self, size_t idx) {
427460 v8::MaybeLocal<v8::Data> maybe = self->GetDataFromSnapshotOnce <v8::Data>(idx);
428461 if (maybe.IsEmpty ()) {
@@ -517,6 +550,12 @@ void v8__HandleScope__DESTRUCT(v8::HandleScope* scope) { scope->~HandleScope();
517550
518551// Context
519552
553+ typedef struct v8__ContextConfig {
554+ const v8::ObjectTemplate* global_template;
555+ const v8::Value* global_object;
556+ v8::MicrotaskQueue* microtask_queue;
557+ } v8__ContextConfig;
558+
520559v8::Context* v8__Context__New (
521560 v8::Isolate* isolate,
522561 const v8::ObjectTemplate* global_tmpl,
@@ -526,6 +565,21 @@ v8::Context* v8__Context__New(
526565 );
527566}
528567
568+ v8::Context* v8__Context__New__Config (
569+ v8::Isolate* isolate,
570+ const v8__ContextConfig* config) {
571+ return local_to_ptr (
572+ v8::Context::New (
573+ isolate,
574+ nullptr ,
575+ ptr_to_maybe_local (config->global_template ),
576+ ptr_to_maybe_local (config->global_object ),
577+ v8::DeserializeInternalFieldsCallback (),
578+ config->microtask_queue
579+ )
580+ );
581+ }
582+
529583v8::Context* v8__Context__FromSnapshot (v8::Isolate* isolate, size_t index) {
530584 v8::MaybeLocal<v8::Context> maybe = v8::Context::FromSnapshot (isolate, index);
531585 if (maybe.IsEmpty ()) {
@@ -560,6 +614,19 @@ void v8__Context__SetEmbedderData(
560614 ptr_to_local (&self)->SetEmbedderData (idx, ptr_to_local (&val));
561615}
562616
617+ void * v8__Context__GetAlignedPointerFromEmbedderData (
618+ const v8::Context* self,
619+ int idx) {
620+ return ptr_to_local (self)->GetAlignedPointerFromEmbedderData (idx);
621+ }
622+
623+ void v8__Context__SetAlignedPointerInEmbedderData (
624+ const v8::Context* self,
625+ int idx,
626+ void * ptr) {
627+ ptr_to_local (self)->SetAlignedPointerInEmbedderData (idx, ptr);
628+ }
629+
563630int v8__Context__DebugContextId (const v8::Context& self) {
564631 return v8::debug::GetContextId (ptr_to_local (&self));
565632}
0 commit comments