diff --git a/src/api/environment.cc b/src/api/environment.cc index 1e7ed233aae97c..e5f29593010b72 100644 --- a/src/api/environment.cc +++ b/src/api/environment.cc @@ -758,7 +758,7 @@ Maybe InitializeMainContextForSnapshot(Local context) { if (InitializeBaseContextForSnapshot(context).IsNothing()) { return Nothing(); } - return InitializePrimordials(context); + return JustVoid(); } Maybe InitializePrimordials(Local context) { @@ -767,13 +767,18 @@ Maybe InitializePrimordials(Local context) { Context::Scope context_scope(context); Local exports; + if (!GetPerContextExports(context).ToLocal(&exports)) { + return Nothing(); + } Local primordials_string = FIXED_ONE_BYTE_STRING(isolate, "primordials"); + // Ensure that `InitializePrimordials` is called exactly once on a given + // context. + CHECK(!exports->Has(context, primordials_string).FromJust()); - // Create primordials first and make it available to per-context scripts. Local primordials = Object::New(isolate); + // Create primordials and make it available to per-context scripts. if (primordials->SetPrototypeV2(context, Null(isolate)).IsNothing() || - !GetPerContextExports(context).ToLocal(&exports) || exports->Set(context, primordials_string, primordials).IsNothing()) { return Nothing(); }