@@ -767,13 +767,13 @@ MaybeLocal<Object> InitializePrivateSymbols(Local<Context> context,
767
767
Context::Scope context_scope (context);
768
768
769
769
Local<ObjectTemplate> private_symbols = ObjectTemplate::New (isolate);
770
- Local<Object> private_symbols_object;
771
770
#define V (PropertyName, _ ) \
772
771
private_symbols->Set (isolate, #PropertyName, isolate_data->PropertyName ());
773
772
774
773
PER_ISOLATE_PRIVATE_SYMBOL_PROPERTIES (V)
775
774
#undef V
776
775
776
+ Local<Object> private_symbols_object;
777
777
if (!private_symbols->NewInstance (context).ToLocal (&private_symbols_object) ||
778
778
private_symbols_object->SetPrototypeV2 (context, Null (isolate))
779
779
.IsNothing ()) {
@@ -783,6 +783,32 @@ MaybeLocal<Object> InitializePrivateSymbols(Local<Context> context,
783
783
return scope.Escape (private_symbols_object);
784
784
}
785
785
786
+ MaybeLocal<Object> InitializePerIsolateSymbols (Local<Context> context,
787
+ IsolateData* isolate_data) {
788
+ CHECK (isolate_data);
789
+ Isolate* isolate = context->GetIsolate ();
790
+ EscapableHandleScope scope (isolate);
791
+ Context::Scope context_scope (context);
792
+
793
+ Local<ObjectTemplate> per_isolate_symbols = ObjectTemplate::New (isolate);
794
+ #define V (PropertyName, _ ) \
795
+ per_isolate_symbols->Set ( \
796
+ isolate, #PropertyName, isolate_data->PropertyName ());
797
+
798
+ PER_ISOLATE_SYMBOL_PROPERTIES (V)
799
+ #undef V
800
+
801
+ Local<Object> per_isolate_symbols_object;
802
+ if (!per_isolate_symbols->NewInstance (context).ToLocal (
803
+ &per_isolate_symbols_object) ||
804
+ per_isolate_symbols_object->SetPrototypeV2 (context, Null (isolate))
805
+ .IsNothing ()) {
806
+ return MaybeLocal<Object>();
807
+ }
808
+
809
+ return scope.Escape (per_isolate_symbols_object);
810
+ }
811
+
786
812
Maybe<void > InitializePrimordials (Local<Context> context,
787
813
IsolateData* isolate_data) {
788
814
// Run per-context JS files.
@@ -812,6 +838,12 @@ Maybe<void> InitializePrimordials(Local<Context> context,
812
838
return Nothing<void >();
813
839
}
814
840
841
+ Local<Object> per_isolate_symbols;
842
+ if (!InitializePerIsolateSymbols (context, isolate_data)
843
+ .ToLocal (&per_isolate_symbols)) {
844
+ return Nothing<void >();
845
+ }
846
+
815
847
static const char * context_files[] = {" internal/per_context/primordials" ,
816
848
" internal/per_context/domexception" ,
817
849
" internal/per_context/messageport" ,
@@ -827,7 +859,8 @@ Maybe<void> InitializePrimordials(Local<Context> context,
827
859
builtin_loader.SetEagerCompile ();
828
860
829
861
for (const char ** module = context_files; *module != nullptr ; module ++) {
830
- Local<Value> arguments[] = {exports, primordials, private_symbols};
862
+ Local<Value> arguments[] = {
863
+ exports, primordials, private_symbols, per_isolate_symbols};
831
864
832
865
if (builtin_loader
833
866
.CompileAndCall (
0 commit comments