@@ -767,13 +767,13 @@ MaybeLocal<Object> InitializePrivateSymbols(Local<Context> context,
767767 Context::Scope context_scope (context);
768768
769769 Local<ObjectTemplate> private_symbols = ObjectTemplate::New (isolate);
770- Local<Object> private_symbols_object;
771770#define V (PropertyName, _ ) \
772771 private_symbols->Set (isolate, #PropertyName, isolate_data->PropertyName ());
773772
774773 PER_ISOLATE_PRIVATE_SYMBOL_PROPERTIES (V)
775774#undef V
776775
776+ Local<Object> private_symbols_object;
777777 if (!private_symbols->NewInstance (context).ToLocal (&private_symbols_object) ||
778778 private_symbols_object->SetPrototypeV2 (context, Null (isolate))
779779 .IsNothing ()) {
@@ -783,6 +783,32 @@ MaybeLocal<Object> InitializePrivateSymbols(Local<Context> context,
783783 return scope.Escape (private_symbols_object);
784784}
785785
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+
786812Maybe<void > InitializePrimordials (Local<Context> context,
787813 IsolateData* isolate_data) {
788814 // Run per-context JS files.
@@ -812,6 +838,12 @@ Maybe<void> InitializePrimordials(Local<Context> context,
812838 return Nothing<void >();
813839 }
814840
841+ Local<Object> per_isolate_symbols;
842+ if (!InitializePerIsolateSymbols (context, isolate_data)
843+ .ToLocal (&per_isolate_symbols)) {
844+ return Nothing<void >();
845+ }
846+
815847 static const char * context_files[] = {" internal/per_context/primordials" ,
816848 " internal/per_context/domexception" ,
817849 " internal/per_context/messageport" ,
@@ -827,7 +859,8 @@ Maybe<void> InitializePrimordials(Local<Context> context,
827859 builtin_loader.SetEagerCompile ();
828860
829861 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};
831864
832865 if (builtin_loader
833866 .CompileAndCall (
0 commit comments