@@ -4533,11 +4533,28 @@ void FreeEnvironment(Environment* env) {
45334533}
45344534
45354535
4536+ Local<Context> NewContext (Isolate* isolate,
4537+ Local<ObjectTemplate> object_template) {
4538+ auto context = Context::New (isolate, nullptr , object_template);
4539+ if (context.IsEmpty ()) return context;
4540+ HandleScope handle_scope (isolate);
4541+ auto intl_key = FIXED_ONE_BYTE_STRING (isolate, " Intl" );
4542+ auto break_iter_key = FIXED_ONE_BYTE_STRING (isolate, " v8BreakIterator" );
4543+ Local<Value> intl_v;
4544+ Local<Object> intl;
4545+ if (context->Global ()->Get (context, intl_key).ToLocal (&intl_v) &&
4546+ intl_v->ToObject (context).ToLocal (&intl)) {
4547+ intl->Delete (context, break_iter_key).FromJust ();
4548+ }
4549+ return context;
4550+ }
4551+
4552+
45364553inline int Start (Isolate* isolate, IsolateData* isolate_data,
45374554 int argc, const char * const * argv,
45384555 int exec_argc, const char * const * exec_argv) {
45394556 HandleScope handle_scope (isolate);
4540- Local<Context> context = Context::New (isolate);
4557+ Local<Context> context = NewContext (isolate);
45414558 Context::Scope context_scope (context);
45424559 Environment env (isolate_data, context);
45434560 CHECK_EQ (0 , uv_key_create (&thread_local_env));
0 commit comments