| Index: src/bootstrapper.cc
|
| diff --git a/src/bootstrapper.cc b/src/bootstrapper.cc
|
| index ee3525ac6be2340155d222c6c5b83c12f14aeb1e..2d4d4b6bce979961ea414587ffb0032325d9a013 100644
|
| --- a/src/bootstrapper.cc
|
| +++ b/src/bootstrapper.cc
|
| @@ -1855,9 +1855,25 @@ void Genesis::InitializeGlobal(Handle<JSGlobalObject> global_object,
|
| prototype, factory->to_string_tag_symbol(), factory->Promise_string(),
|
| static_cast<PropertyAttributes>(DONT_ENUM | READ_ONLY));
|
|
|
| - SimpleInstallFunction(prototype, "then", Builtins::kPromiseThen, 2, true,
|
| + Handle<JSFunction> promise_then =
|
| + SimpleCreateFunction(isolate, isolate->factory()->then_string(),
|
| + Builtins::kPromiseThen, 2, true);
|
| + JSObject::AddProperty(prototype, isolate->factory()->then_string(),
|
| + promise_then, DONT_ENUM);
|
| + InstallWithIntrinsicDefaultProto(isolate, promise_then,
|
| + Context::PROMISE_THEN_INDEX);
|
| +
|
| + // TODO(gsathya): Move to TF
|
| + SimpleInstallFunction(prototype, "catch", Builtins::kIllegal, 1, true,
|
| DONT_ENUM);
|
|
|
| + Handle<Map> prototype_map(prototype->map());
|
| + Map::SetShouldBeFastPrototypeMap(prototype_map, true, isolate);
|
| +
|
| + // Store the initial Promise.prototype map. This is used in fast-path
|
| + // checks. Do not alter the prototype after this point.
|
| + native_context()->set_promise_prototype_map(*prototype_map);
|
| +
|
| { // Internal: PromiseInternalConstructor
|
| Handle<JSFunction> function =
|
| SimpleCreateFunction(isolate, factory->empty_string(),
|
| @@ -1889,6 +1905,14 @@ void Genesis::InitializeGlobal(Handle<JSGlobalObject> global_object,
|
| Context::PERFORM_PROMISE_THEN_INDEX);
|
| }
|
|
|
| + { // Internal: ResolvePromise
|
| + Handle<JSFunction> function =
|
| + SimpleCreateFunction(isolate, factory->empty_string(),
|
| + Builtins::kResolvePromise, 2, false);
|
| + InstallWithIntrinsicDefaultProto(isolate, function,
|
| + Context::PROMISE_RESOLVE_INDEX);
|
| + }
|
| +
|
| {
|
| Handle<Code> code =
|
| handle(isolate->builtins()->builtin(Builtins::kPromiseResolveClosure),
|
| @@ -3523,6 +3547,9 @@ bool Genesis::InstallNatives(GlobalContextType context_type) {
|
|
|
| InstallInternalArray(extras_utils, "InternalPackedArray", FAST_ELEMENTS);
|
|
|
| + InstallFunction(extras_utils, isolate()->promise_resolve(),
|
| + factory()->NewStringFromAsciiChecked("resolvePromise"));
|
| +
|
| int builtin_index = Natives::GetDebuggerCount();
|
| // Only run prologue.js and runtime.js at this point.
|
| DCHECK_EQ(builtin_index, Natives::GetIndex("prologue"));
|
|
|