-
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 c6ef9dc13ab6f1d1a778871a62a0a98a01d84ec6..222555831aa1bf0b7b29b4b46e235c98a5dd4ac5 100644
--- a/src/env-inl.h
+++ b/src/env-inl.h
@@ -1123,12 +1123,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 657d711e539d81bfd03166bbaaae7f0b5db91a5f..02c5ba259c94bb160972005998007d66731d9dde 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;
@@ -494,7 +493,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_));
@@ -1121,25 +1119,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 b6e02a2910cd8fe5ff3a17d6e1a98b937323ae3a..c1966a9f55126bdd65d8c9d529d934977bb4ad65 100644
--- a/src/env.h
+++ b/src/env.h
@@ -1132,9 +1132,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.
@@ -1357,8 +1355,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 638a1a85b046ce4db303d532f7cf36cca2271db5..b9b11b4331bd3ae4a87f65758ee09af25222e19a 100644
--- a/src/node.h
+++ b/src/node.h
@@ -322,8 +322,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