From 53ea813d5c0029d3ee90230054d5407a6864cb08 Mon Sep 17 00:00:00 2001 From: Anna Henningsen Date: Fri, 15 Mar 2019 22:57:44 +0100 Subject: deps: V8: cherry-pick 2f79d68 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Original commit message: Deprecate MicrotasksCompletedCallback in favor to use *WithData version This adds overloads of v8::Isolate::{Add,Remove}MicrotaskCompletedCallback, that use MicrotasksCompletedCallbackWithData, and marks the original one as V8_DEPRECATE_SOON for transition. Bug: v8:8124 Change-Id: I124c3108545e1a2b29cd95620f36901431663c65 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1493766 Reviewed-by: Yang Guo Commit-Queue: Taiju Tsuiki Cr-Commit-Position: refs/heads/master@{#60045} Refs: https://github.com/v8/v8/commit/2f79d68664ba113b69f62c29ce85fd29dcf87df3 PR-URL: https://github.com/nodejs/node/pull/26685 Reviewed-By: Anna Henningsen Reviewed-By: Michaƫl Zasso Reviewed-By: Refael Ackermann --- common.gypi | 2 +- deps/v8/include/v8.h | 15 ++++++++++++--- deps/v8/src/api.cc | 15 ++++++++++++++- deps/v8/src/inspector/v8-debugger.cc | 12 +++++++++--- deps/v8/src/inspector/v8-debugger.h | 2 ++ deps/v8/src/microtask-queue.h | 2 -- deps/v8/test/cctest/test-api.cc | 4 +--- 7 files changed, 39 insertions(+), 13 deletions(-) diff --git a/common.gypi b/common.gypi index 787fc243c3..4f01432201 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 6ecc48af33..987748ca00 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 168522f8c3..8375f13ba5 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 ccc5676058..0f8e52f7cd 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 91d8c7e248..7315c96964 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 7224794c1d..ce09088526 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 9dfe1155d9..bd8180fb12 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()); -- cgit v1.2.3