diff --git a/common.gypi b/common.gypi index 787fc243c3b323..4f0143220163b1 100644 --- a/common.gypi +++ b/common.gypi @@ -37,7 +37,7 @@ # Reset this number to 0 on major V8 upgrades. # Increment by one for each non-official patch applied to deps/v8. - 'v8_embedder_string': '-node.0', + 'v8_embedder_string': '-node.1', ##### V8 defaults for Node.js ##### diff --git a/deps/v8/include/v8.h b/deps/v8/include/v8.h index 6ecc48af33288c..987748ca003fa9 100644 --- a/deps/v8/include/v8.h +++ b/deps/v8/include/v8.h @@ -6744,7 +6744,8 @@ class PromiseRejectMessage { typedef void (*PromiseRejectCallback)(PromiseRejectMessage message); // --- Microtasks Callbacks --- -typedef void (*MicrotasksCompletedCallback)(Isolate*); +V8_DEPRECATE_SOON("Use *WithData version.", + typedef void (*MicrotasksCompletedCallback)(Isolate*)); typedef void (*MicrotasksCompletedCallbackWithData)(Isolate*, void*); typedef void (*MicrotaskCallback)(void* data); @@ -8231,12 +8232,20 @@ class V8_EXPORT Isolate { * Executing scripts inside the callback will not re-trigger microtasks and * the callback. */ - void AddMicrotasksCompletedCallback(MicrotasksCompletedCallback callback); + V8_DEPRECATE_SOON("Use *WithData version.", + void AddMicrotasksCompletedCallback( + MicrotasksCompletedCallback callback)); + void AddMicrotasksCompletedCallback( + MicrotasksCompletedCallbackWithData callback, void* data = nullptr); /** * Removes callback that was installed by AddMicrotasksCompletedCallback. */ - void RemoveMicrotasksCompletedCallback(MicrotasksCompletedCallback callback); + V8_DEPRECATE_SOON("Use *WithData version.", + void RemoveMicrotasksCompletedCallback( + MicrotasksCompletedCallback callback)); + void RemoveMicrotasksCompletedCallback( + MicrotasksCompletedCallbackWithData callback, void* data = nullptr); /** * Sets a callback for counting the number of times a feature of V8 is used. diff --git a/deps/v8/src/api.cc b/deps/v8/src/api.cc index 168522f8c36b43..8375f13ba56d89 100644 --- a/deps/v8/src/api.cc +++ b/deps/v8/src/api.cc @@ -8574,7 +8574,7 @@ MicrotasksPolicy Isolate::GetMicrotasksPolicy() const { namespace { void MicrotasksCompletedCallbackAdapter(v8::Isolate* isolate, void* data) { - auto callback = reinterpret_cast(data); + auto callback = reinterpret_cast(data); callback(isolate); } @@ -8588,6 +8588,13 @@ void Isolate::AddMicrotasksCompletedCallback( &MicrotasksCompletedCallbackAdapter, reinterpret_cast(callback)); } +void Isolate::AddMicrotasksCompletedCallback( + MicrotasksCompletedCallbackWithData callback, void* data) { + DCHECK(callback); + i::Isolate* isolate = reinterpret_cast(this); + isolate->default_microtask_queue()->AddMicrotasksCompletedCallback(callback, + data); +} void Isolate::RemoveMicrotasksCompletedCallback( MicrotasksCompletedCallback callback) { @@ -8596,6 +8603,12 @@ void Isolate::RemoveMicrotasksCompletedCallback( &MicrotasksCompletedCallbackAdapter, reinterpret_cast(callback)); } +void Isolate::RemoveMicrotasksCompletedCallback( + MicrotasksCompletedCallbackWithData callback, void* data) { + i::Isolate* isolate = reinterpret_cast(this); + isolate->default_microtask_queue()->RemoveMicrotasksCompletedCallback( + callback, data); +} void Isolate::SetUseCounterCallback(UseCounterCallback callback) { reinterpret_cast(this)->SetUseCounterCallback(callback); diff --git a/deps/v8/src/inspector/v8-debugger.cc b/deps/v8/src/inspector/v8-debugger.cc index ccc5676058bbdc..0f8e52f7cd8e76 100644 --- a/deps/v8/src/inspector/v8-debugger.cc +++ b/deps/v8/src/inspector/v8-debugger.cc @@ -59,6 +59,7 @@ class MatchPrototypePredicate : public v8::debug::QueryObjectPredicate { v8::Local m_context; v8::Local m_prototype; }; + } // namespace V8Debugger::V8Debugger(v8::Isolate* isolate, V8InspectorImpl* inspector) @@ -76,7 +77,7 @@ V8Debugger::~V8Debugger() { m_isolate->RemoveCallCompletedCallback( &V8Debugger::terminateExecutionCompletedCallback); m_isolate->RemoveMicrotasksCompletedCallback( - &V8Debugger::terminateExecutionCompletedCallback); + &V8Debugger::terminateExecutionCompletedCallbackIgnoringData); } void V8Debugger::enable() { @@ -302,7 +303,7 @@ void V8Debugger::terminateExecution( m_isolate->AddCallCompletedCallback( &V8Debugger::terminateExecutionCompletedCallback); m_isolate->AddMicrotasksCompletedCallback( - &V8Debugger::terminateExecutionCompletedCallback); + &V8Debugger::terminateExecutionCompletedCallbackIgnoringData); m_isolate->TerminateExecution(); } @@ -311,7 +312,7 @@ void V8Debugger::reportTermination() { m_isolate->RemoveCallCompletedCallback( &V8Debugger::terminateExecutionCompletedCallback); m_isolate->RemoveMicrotasksCompletedCallback( - &V8Debugger::terminateExecutionCompletedCallback); + &V8Debugger::terminateExecutionCompletedCallbackIgnoringData); m_isolate->CancelTerminateExecution(); m_terminateExecutionCallback->sendSuccess(); m_terminateExecutionCallback.reset(); @@ -324,6 +325,11 @@ void V8Debugger::terminateExecutionCompletedCallback(v8::Isolate* isolate) { debugger->reportTermination(); } +void V8Debugger::terminateExecutionCompletedCallbackIgnoringData( + v8::Isolate* isolate, void*) { + terminateExecutionCompletedCallback(isolate); +} + Response V8Debugger::continueToLocation( int targetContextGroupId, V8DebuggerScript* script, std::unique_ptr location, diff --git a/deps/v8/src/inspector/v8-debugger.h b/deps/v8/src/inspector/v8-debugger.h index 91d8c7e2481692..7315c969646ebe 100644 --- a/deps/v8/src/inspector/v8-debugger.h +++ b/deps/v8/src/inspector/v8-debugger.h @@ -144,6 +144,8 @@ class V8Debugger : public v8::debug::DebugDelegate, static size_t nearHeapLimitCallback(void* data, size_t current_heap_limit, size_t initial_heap_limit); static void terminateExecutionCompletedCallback(v8::Isolate* isolate); + static void terminateExecutionCompletedCallbackIgnoringData( + v8::Isolate* isolate, void*); void handleProgramBreak( v8::Local pausedContext, v8::Local exception, const std::vector& hitBreakpoints, diff --git a/deps/v8/src/microtask-queue.h b/deps/v8/src/microtask-queue.h index 7224794c1d1ef7..ce0908852645f8 100644 --- a/deps/v8/src/microtask-queue.h +++ b/deps/v8/src/microtask-queue.h @@ -87,8 +87,6 @@ class V8_EXPORT_PRIVATE MicrotaskQueue final : public v8::MicrotaskQueue { } v8::MicrotasksPolicy microtasks_policy() const { return microtasks_policy_; } - void AddMicrotasksCompletedCallback(MicrotasksCompletedCallback callback); - void RemoveMicrotasksCompletedCallback(MicrotasksCompletedCallback callback); void FireMicrotasksCompletedCallback(Isolate* isolate) const; intptr_t capacity() const { return capacity_; } diff --git a/deps/v8/test/cctest/test-api.cc b/deps/v8/test/cctest/test-api.cc index 9dfe1155d987d0..bd8180fb122683 100644 --- a/deps/v8/test/cctest/test-api.cc +++ b/deps/v8/test/cctest/test-api.cc @@ -21680,12 +21680,10 @@ TEST(RunMicrotasksIgnoresThrownExceptionsFromApi) { uint8_t microtasks_completed_callback_count = 0; - -static void MicrotasksCompletedCallback(v8::Isolate* isolate) { +static void MicrotasksCompletedCallback(v8::Isolate* isolate, void*) { ++microtasks_completed_callback_count; } - TEST(SetAutorunMicrotasks) { LocalContext env; v8::HandleScope scope(env->GetIsolate());