summaryrefslogtreecommitdiff
path: root/src/api
diff options
context:
space:
mode:
Diffstat (limited to 'src/api')
-rw-r--r--src/api/environment.cc34
1 files changed, 33 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};