-
Notifications
You must be signed in to change notification settings - Fork 15k
/
chore_sethostcleanupfinalizationgroupcallback_has_been_removed_from.patch
145 lines (135 loc) · 5.52 KB
/
chore_sethostcleanupfinalizationgroupcallback_has_been_removed_from.patch
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Samuel Attard <samuel.r.attard@gmail.com>
Date: Mon, 4 May 2020 16:57:05 -0700
Subject: chore: SetHostCleanupFinalizationGroupCallback has been removed from
V8
diff --git a/src/api/environment.cc b/src/api/environment.cc
index 60d30b7eff7329c4235024c31525107216d70d7a..21980987644c6e83029157785dea463070456c77 100644
--- a/src/api/environment.cc
+++ b/src/api/environment.cc
@@ -12,7 +12,6 @@ using errors::TryCatchScope;
using v8::Array;
using v8::Context;
using v8::EscapableHandleScope;
-using v8::FinalizationGroup;
using v8::Function;
using v8::FunctionCallbackInfo;
using v8::HandleScope;
@@ -78,15 +77,6 @@ static MaybeLocal<Value> PrepareStackTraceCallback(Local<Context> context,
return result;
}
-static void HostCleanupFinalizationGroupCallback(
- Local<Context> context, Local<FinalizationGroup> group) {
- Environment* env = Environment::GetCurrent(context);
- if (env == nullptr) {
- return;
- }
- env->RegisterFinalizationGroupForCleanup(group);
-}
-
void* NodeArrayBufferAllocator::Allocate(size_t size) {
void* ret;
if (zero_fill_field_ || per_process::cli_options->zero_fill_all_buffers)
@@ -255,11 +245,6 @@ void SetIsolateMiscHandlers(v8::Isolate* isolate, const IsolateSettings& s) {
s.promise_reject_callback : task_queue::PromiseRejectCallback;
isolate->SetPromiseRejectCallback(promise_reject_cb);
- auto* host_cleanup_cb = s.host_cleanup_finalization_group_callback ?
- s.host_cleanup_finalization_group_callback :
- HostCleanupFinalizationGroupCallback;
- isolate->SetHostCleanupFinalizationGroupCallback(host_cleanup_cb);
-
if (s.flags & DETAILED_SOURCE_POSITIONS_FOR_PROFILING)
v8::CpuProfiler::UseDetailedSourcePositionsForProfiling(isolate);
}
diff --git a/src/env-inl.h b/src/env-inl.h
index fcb58dc6709d1333fb992e4a0fbf498fbb496994..71d86c4976806508c5b2db1563bfa4f460ff618f 100644
--- a/src/env-inl.h
+++ b/src/env-inl.h
@@ -1191,12 +1191,6 @@ void Environment::RemoveCleanupHook(void (*fn)(void*), void* arg) {
cleanup_hooks_.erase(search);
}
-inline void Environment::RegisterFinalizationGroupForCleanup(
- v8::Local<v8::FinalizationGroup> group) {
- cleanup_finalization_groups_.emplace_back(isolate(), group);
- uv_async_send(&task_queues_async_);
-}
-
size_t CleanupHookCallback::Hash::operator()(
const CleanupHookCallback& cb) const {
return std::hash<void*>()(cb.arg_);
diff --git a/src/env.cc b/src/env.cc
index 3974e6c7ebe74004a7a9e4dc2966fd8651c1522f..da779854f928abda5ee9d08c39ba1b5e5eb798a4 100644
--- a/src/env.cc
+++ b/src/env.cc
@@ -30,7 +30,6 @@ using v8::ArrayBuffer;
using v8::Boolean;
using v8::Context;
using v8::EmbedderGraph;
-using v8::FinalizationGroup;
using v8::Function;
using v8::FunctionTemplate;
using v8::HandleScope;
@@ -500,7 +499,6 @@ void Environment::InitializeLibuv(bool start_profiler_idle_notifier) {
[](uv_async_t* async) {
Environment* env = ContainerOf(
&Environment::task_queues_async_, async);
- env->CleanupFinalizationGroups();
env->RunAndClearNativeImmediates();
});
uv_unref(reinterpret_cast<uv_handle_t*>(&idle_prepare_handle_));
@@ -1138,25 +1136,6 @@ void Environment::RunWeakRefCleanup() {
isolate()->ClearKeptObjects();
}
-void Environment::CleanupFinalizationGroups() {
- HandleScope handle_scope(isolate());
- Context::Scope context_scope(context());
- TryCatchScope try_catch(this);
-
- while (!cleanup_finalization_groups_.empty() && can_call_into_js()) {
- Local<FinalizationGroup> fg =
- cleanup_finalization_groups_.front().Get(isolate());
- cleanup_finalization_groups_.pop_front();
- if (!FinalizationGroup::Cleanup(fg).FromMaybe(false)) {
- if (try_catch.HasCaught() && !try_catch.HasTerminated())
- errors::TriggerUncaughtException(isolate(), try_catch);
- // Re-schedule the execution of the remainder of the queue.
- uv_async_send(&task_queues_async_);
- return;
- }
- }
-}
-
// Not really any better place than env.cc at this moment.
void BaseObject::DeleteMe(void* data) {
BaseObject* self = static_cast<BaseObject*>(data);
diff --git a/src/env.h b/src/env.h
index 5c0392a59b3938b0b6e433024f9dd92e222a1b47..7ba18f8ec0e2675cb634e26250266ad809708f82 100644
--- a/src/env.h
+++ b/src/env.h
@@ -1129,9 +1129,7 @@ class Environment : public MemoryRetainer {
void AtExit(void (*cb)(void* arg), void* arg);
void RunAtExitCallbacks();
- void RegisterFinalizationGroupForCleanup(v8::Local<v8::FinalizationGroup> fg);
void RunWeakRefCleanup();
- void CleanupFinalizationGroups();
// Strings and private symbols are shared across shared contexts
// The getters simply proxy to the per-isolate primitive.
@@ -1354,8 +1352,6 @@ class Environment : public MemoryRetainer {
uint64_t thread_id_;
std::unordered_set<worker::Worker*> sub_worker_contexts_;
- std::deque<v8::Global<v8::FinalizationGroup>> cleanup_finalization_groups_;
-
static void* const kNodeContextTagPtr;
static int const kNodeContextTag;
diff --git a/src/node.h b/src/node.h
index 709d03145e3d5acdb67502110917e8147c275c60..a279cc7cc6205907eb5f9c3f6237513b2354f6be 100644
--- a/src/node.h
+++ b/src/node.h
@@ -323,8 +323,6 @@ struct IsolateSettings {
v8::PromiseRejectCallback promise_reject_callback = nullptr;
v8::AllowWasmCodeGenerationCallback
allow_wasm_code_generation_callback = nullptr;
- v8::HostCleanupFinalizationGroupCallback
- host_cleanup_finalization_group_callback = nullptr;
};
// Overriding IsolateSettings may produce unexpected behavior