summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGus Caplan <me@gus.host>2019-09-16 16:05:20 -0500
committerGus Caplan <me@gus.host>2019-09-18 16:09:20 -0500
commit1ec4154e507ba71d7aefca0a6e5c155be34e989a (patch)
treebbfbdcae6ecf134be8b21534f1d5c6795b5356a7 /src
parent954bf56c1e9a4a1c195114f61d9b0fe39c80ca2e (diff)
downloadandroid-node-v8-1ec4154e507ba71d7aefca0a6e5c155be34e989a.tar.gz
android-node-v8-1ec4154e507ba71d7aefca0a6e5c155be34e989a.tar.bz2
android-node-v8-1ec4154e507ba71d7aefca0a6e5c155be34e989a.zip
src: re-delete Atomics.wake
PR-URL: https://github.com/nodejs/node/pull/29586 Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: David Carlier <devnexen@gmail.com>
Diffstat (limited to 'src')
-rw-r--r--src/api/environment.cc34
-rw-r--r--src/node_internals.h2
-rw-r--r--src/node_main_instance.cc1
3 files changed, 36 insertions, 1 deletions
diff --git a/src/api/environment.cc b/src/api/environment.cc
index 7fd219d6e8..2c0fe13063 100644
--- a/src/api/environment.cc
+++ b/src/api/environment.cc
@@ -357,9 +357,42 @@ Local<Context> NewContext(Isolate* isolate,
if (!InitializeContext(context)) {
return Local<Context>();
}
+
+ InitializeContextRuntime(context);
+
return context;
}
+// This runs at runtime, regardless of whether the context
+// is created from a snapshot.
+void InitializeContextRuntime(Local<Context> context) {
+ Isolate* isolate = context->GetIsolate();
+ HandleScope handle_scope(isolate);
+
+ // Delete `Intl.v8BreakIterator`
+ // https://github.com/nodejs/node/issues/14909
+ Local<String> intl_string = FIXED_ONE_BYTE_STRING(isolate, "Intl");
+ Local<String> break_iter_string =
+ FIXED_ONE_BYTE_STRING(isolate, "v8BreakIterator");
+ Local<Value> intl_v;
+ if (context->Global()->Get(context, intl_string).ToLocal(&intl_v) &&
+ intl_v->IsObject()) {
+ Local<Object> intl = intl_v.As<Object>();
+ intl->Delete(context, break_iter_string).FromJust();
+ }
+
+ // Delete `Atomics.wake`
+ // https://github.com/nodejs/node/issues/21219
+ Local<String> atomics_string = FIXED_ONE_BYTE_STRING(isolate, "Atomics");
+ Local<String> wake_string = FIXED_ONE_BYTE_STRING(isolate, "wake");
+ Local<Value> atomics_v;
+ if (context->Global()->Get(context, atomics_string).ToLocal(&atomics_v) &&
+ atomics_v->IsObject()) {
+ Local<Object> atomics = atomics_v.As<Object>();
+ atomics->Delete(context, wake_string).FromJust();
+ }
+}
+
bool InitializeContext(Local<Context> context) {
Isolate* isolate = context->GetIsolate();
HandleScope handle_scope(isolate);
@@ -386,7 +419,6 @@ bool InitializeContext(Local<Context> context) {
}
static const char* context_files[] = {"internal/per_context/primordials",
- "internal/per_context/setup",
"internal/per_context/domexception",
nullptr};
diff --git a/src/node_internals.h b/src/node_internals.h
index 691b954dc4..0f4c32bb94 100644
--- a/src/node_internals.h
+++ b/src/node_internals.h
@@ -99,6 +99,8 @@ void SignalExit(int signal, siginfo_t* info, void* ucontext);
std::string GetHumanReadableProcessName();
void GetHumanReadableProcessName(char (*name)[1024]);
+void InitializeContextRuntime(v8::Local<v8::Context>);
+
namespace task_queue {
void PromiseRejectCallback(v8::PromiseRejectMessage message);
} // namespace task_queue
diff --git a/src/node_main_instance.cc b/src/node_main_instance.cc
index 05ff8d5526..630933cec8 100644
--- a/src/node_main_instance.cc
+++ b/src/node_main_instance.cc
@@ -179,6 +179,7 @@ std::unique_ptr<Environment> NodeMainInstance::CreateMainEnvironment(
if (deserialize_mode_) {
context =
Context::FromSnapshot(isolate_, kNodeContextIndex).ToLocalChecked();
+ InitializeContextRuntime(context);
SetIsolateUpForNode(isolate_, IsolateSettingCategories::kErrorHandlers);
} else {
context = NewContext(isolate_);