Skip to content

Commit f868384

Browse files
edusperoniNathanWalker
authored andcommitted
feat: expose PerformMicrotaskCheckpoint (#133)
1 parent 1dea4c4 commit f868384

File tree

2 files changed

+9
-0
lines changed

2 files changed

+9
-0
lines changed

NativeScript/runtime/Runtime.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ class Runtime {
5555
void DefineNativeScriptVersion(v8::Isolate* isolate, v8::Local<v8::ObjectTemplate> globalTemplate);
5656
void DefinePerformanceObject(v8::Isolate* isolate, v8::Local<v8::ObjectTemplate> globalTemplate);
5757
void DefineTimeMethod(v8::Isolate* isolate, v8::Local<v8::ObjectTemplate> globalTemplate);
58+
void DefineDrainMicrotaskMethod(v8::Isolate* isolate, v8::Local<v8::ObjectTemplate> globalTemplate);
5859
static void PerformanceNowCallback(const v8::FunctionCallbackInfo<v8::Value>& args);
5960
v8::Isolate* isolate_;
6061
std::unique_ptr<ModuleInternal> moduleInternal_;

NativeScript/runtime/Runtime.mm

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,7 @@
9393
Worker::Init(isolate, globalTemplate, mainThreadInitialized_);
9494
DefinePerformanceObject(isolate, globalTemplate);
9595
DefineTimeMethod(isolate, globalTemplate);
96+
DefineDrainMicrotaskMethod(isolate, globalTemplate);
9697
ObjectManager::Init(isolate, globalTemplate);
9798
// SetTimeout::Init(isolate, globalTemplate);
9899
MetadataBuilder::RegisterConstantsOnGlobalObject(isolate, globalTemplate, mainThreadInitialized_);
@@ -230,6 +231,13 @@
230231
globalTemplate->Set(ToV8String(isolate, "__time"), timeFunctionTemplate);
231232
}
232233

234+
void Runtime::DefineDrainMicrotaskMethod(v8::Isolate* isolate, v8::Local<v8::ObjectTemplate> globalTemplate) {
235+
Local<FunctionTemplate> drainMicrotaskTemplate = FunctionTemplate::New(isolate, [](const FunctionCallbackInfo<Value>& info) {
236+
info.GetIsolate()->PerformMicrotaskCheckpoint();
237+
});
238+
globalTemplate->Set(ToV8String(isolate, "__drainMicrotaskQueue"), drainMicrotaskTemplate);
239+
}
240+
233241
bool Runtime::IsAlive(Isolate* isolate) {
234242
return std::find(Runtime::isolates_.begin(), Runtime::isolates_.end(), isolate) != Runtime::isolates_.end();
235243
}

0 commit comments

Comments
 (0)