@@ -787,13 +787,13 @@ MaybeLocal<Object> InitializePrivateSymbols(Local<Context> context,
787
787
Context::Scope context_scope (context);
788
788
789
789
Local<ObjectTemplate> private_symbols = ObjectTemplate::New (isolate);
790
- Local<Object> private_symbols_object;
791
790
#define V (PropertyName, _ ) \
792
791
private_symbols->Set (isolate, #PropertyName, isolate_data->PropertyName ());
793
792
794
793
PER_ISOLATE_PRIVATE_SYMBOL_PROPERTIES (V)
795
794
#undef V
796
795
796
+ Local<Object> private_symbols_object;
797
797
if (!private_symbols->NewInstance (context).ToLocal (&private_symbols_object) ||
798
798
private_symbols_object->SetPrototypeV2 (context, Null (isolate))
799
799
.IsNothing ()) {
@@ -803,6 +803,32 @@ MaybeLocal<Object> InitializePrivateSymbols(Local<Context> context,
803
803
return scope.Escape (private_symbols_object);
804
804
}
805
805
806
+ MaybeLocal<Object> InitializePerIsolateSymbols (Local<Context> context,
807
+ IsolateData* isolate_data) {
808
+ CHECK (isolate_data);
809
+ Isolate* isolate = context->GetIsolate ();
810
+ EscapableHandleScope scope (isolate);
811
+ Context::Scope context_scope (context);
812
+
813
+ Local<ObjectTemplate> per_isolate_symbols = ObjectTemplate::New (isolate);
814
+ #define V (PropertyName, _ ) \
815
+ per_isolate_symbols->Set ( \
816
+ isolate, #PropertyName, isolate_data->PropertyName ());
817
+
818
+ PER_ISOLATE_SYMBOL_PROPERTIES (V)
819
+ #undef V
820
+
821
+ Local<Object> per_isolate_symbols_object;
822
+ if (!per_isolate_symbols->NewInstance (context).ToLocal (
823
+ &per_isolate_symbols_object) ||
824
+ per_isolate_symbols_object->SetPrototypeV2 (context, Null (isolate))
825
+ .IsNothing ()) {
826
+ return MaybeLocal<Object>();
827
+ }
828
+
829
+ return scope.Escape (per_isolate_symbols_object);
830
+ }
831
+
806
832
Maybe<void > InitializePrimordials (Local<Context> context,
807
833
IsolateData* isolate_data) {
808
834
// Run per-context JS files.
@@ -832,6 +858,12 @@ Maybe<void> InitializePrimordials(Local<Context> context,
832
858
return Nothing<void >();
833
859
}
834
860
861
+ Local<Object> per_isolate_symbols;
862
+ if (!InitializePerIsolateSymbols (context, isolate_data)
863
+ .ToLocal (&per_isolate_symbols)) {
864
+ return Nothing<void >();
865
+ }
866
+
835
867
static const char * context_files[] = {" internal/per_context/primordials" ,
836
868
" internal/per_context/domexception" ,
837
869
" internal/per_context/messageport" ,
@@ -847,7 +879,8 @@ Maybe<void> InitializePrimordials(Local<Context> context,
847
879
builtin_loader.SetEagerCompile ();
848
880
849
881
for (const char ** module = context_files; *module != nullptr ; module ++) {
850
- Local<Value> arguments[] = {exports, primordials, private_symbols};
882
+ Local<Value> arguments[] = {
883
+ exports, primordials, private_symbols, per_isolate_symbols};
851
884
852
885
if (builtin_loader
853
886
.CompileAndCall (
0 commit comments