| Index: src/bootstrapper.cc
|
| diff --git a/src/bootstrapper.cc b/src/bootstrapper.cc
|
| index 1eb1f06e26fa453569dd909bc3f55a80c477922c..8fe3358e2f79ad878e1dd53d8d4480710941b441 100644
|
| --- a/src/bootstrapper.cc
|
| +++ b/src/bootstrapper.cc
|
| @@ -1935,14 +1935,6 @@ void Genesis::InitializeGlobal(Handle<JSGlobalObject> global_object,
|
| Context::IS_PROMISE_INDEX);
|
| }
|
|
|
| - { // Internal: PerformPromiseThen
|
| - Handle<JSFunction> function =
|
| - SimpleCreateFunction(isolate, factory->empty_string(),
|
| - Builtins::kPerformPromiseThen, 4, false);
|
| - InstallWithIntrinsicDefaultProto(isolate, function,
|
| - Context::PERFORM_PROMISE_THEN_INDEX);
|
| - }
|
| -
|
| { // Internal: ResolvePromise
|
| // Also exposed as extrasUtils.resolvePromise.
|
| Handle<JSFunction> function = SimpleCreateFunction(
|
| @@ -3350,57 +3342,85 @@ void Bootstrapper::ExportFromRuntime(Isolate* isolate,
|
| script_source_mapping_url, attribs);
|
| script_map->AppendDescriptor(&d);
|
| }
|
| + }
|
| +
|
| + { // -- A s y n c F u n c t i o n
|
| + // Builtin functions for AsyncFunction.
|
| + PrototypeIterator iter(native_context->async_function_map());
|
| + Handle<JSObject> async_function_prototype(iter.GetCurrent<JSObject>());
|
| +
|
| + static const bool kUseStrictFunctionMap = true;
|
| + Handle<JSFunction> async_function_constructor = InstallFunction(
|
| + container, "AsyncFunction", JS_FUNCTION_TYPE, JSFunction::kSize,
|
| + async_function_prototype, Builtins::kAsyncFunctionConstructor,
|
| + kUseStrictFunctionMap);
|
| + async_function_constructor->shared()->DontAdaptArguments();
|
| + async_function_constructor->shared()->SetConstructStub(
|
| + *isolate->builtins()->AsyncFunctionConstructor());
|
| + async_function_constructor->shared()->set_length(1);
|
| + InstallWithIntrinsicDefaultProto(isolate, async_function_constructor,
|
| + Context::ASYNC_FUNCTION_FUNCTION_INDEX);
|
| + JSObject::ForceSetPrototype(async_function_constructor,
|
| + isolate->function_function());
|
| +
|
| + JSObject::AddProperty(
|
| + async_function_prototype, factory->constructor_string(),
|
| + async_function_constructor,
|
| + static_cast<PropertyAttributes>(DONT_ENUM | READ_ONLY));
|
| +
|
| + JSFunction::SetPrototype(async_function_constructor,
|
| + async_function_prototype);
|
|
|
| {
|
| - PrototypeIterator iter(native_context->async_function_map());
|
| - Handle<JSObject> async_function_prototype(iter.GetCurrent<JSObject>());
|
| -
|
| - static const bool kUseStrictFunctionMap = true;
|
| - Handle<JSFunction> async_function_constructor = InstallFunction(
|
| - container, "AsyncFunction", JS_FUNCTION_TYPE, JSFunction::kSize,
|
| - async_function_prototype, Builtins::kAsyncFunctionConstructor,
|
| - kUseStrictFunctionMap);
|
| - async_function_constructor->shared()->DontAdaptArguments();
|
| - async_function_constructor->shared()->SetConstructStub(
|
| - *isolate->builtins()->AsyncFunctionConstructor());
|
| - async_function_constructor->shared()->set_length(1);
|
| - InstallWithIntrinsicDefaultProto(isolate, async_function_constructor,
|
| - Context::ASYNC_FUNCTION_FUNCTION_INDEX);
|
| - JSObject::ForceSetPrototype(async_function_constructor,
|
| - isolate->function_function());
|
| -
|
| - JSObject::AddProperty(
|
| - async_function_prototype, factory->constructor_string(),
|
| - async_function_constructor,
|
| - static_cast<PropertyAttributes>(DONT_ENUM | READ_ONLY));
|
| -
|
| - JSFunction::SetPrototype(async_function_constructor,
|
| - async_function_prototype);
|
| -
|
| - Handle<JSFunction> async_function_next =
|
| - SimpleInstallFunction(container, "AsyncFunctionNext",
|
| - Builtins::kGeneratorPrototypeNext, 1, true);
|
| - Handle<JSFunction> async_function_throw =
|
| - SimpleInstallFunction(container, "AsyncFunctionThrow",
|
| - Builtins::kGeneratorPrototypeThrow, 1, true);
|
| - async_function_next->shared()->set_native(false);
|
| - async_function_throw->shared()->set_native(false);
|
| + Handle<JSFunction> function =
|
| + SimpleCreateFunction(isolate, factory->empty_string(),
|
| + Builtins::kAsyncFunctionAwaitCaught, 3, false);
|
| + InstallWithIntrinsicDefaultProto(
|
| + isolate, function, Context::ASYNC_FUNCTION_AWAIT_CAUGHT_INDEX);
|
| + }
|
|
|
| - {
|
| - Handle<JSFunction> function = SimpleCreateFunction(
|
| - isolate, factory->empty_string(),
|
| - Builtins::kAsyncFunctionPromiseCreate, 0, false);
|
| - InstallWithIntrinsicDefaultProto(
|
| - isolate, function, Context::ASYNC_FUNCTION_PROMISE_CREATE_INDEX);
|
| - }
|
| + {
|
| + Handle<JSFunction> function =
|
| + SimpleCreateFunction(isolate, factory->empty_string(),
|
| + Builtins::kAsyncFunctionAwaitUncaught, 3, false);
|
| + InstallWithIntrinsicDefaultProto(
|
| + isolate, function, Context::ASYNC_FUNCTION_AWAIT_UNCAUGHT_INDEX);
|
| + }
|
|
|
| - {
|
| - Handle<JSFunction> function = SimpleCreateFunction(
|
| - isolate, factory->empty_string(),
|
| - Builtins::kAsyncFunctionPromiseRelease, 1, false);
|
| - InstallWithIntrinsicDefaultProto(
|
| - isolate, function, Context::ASYNC_FUNCTION_PROMISE_RELEASE_INDEX);
|
| - }
|
| + {
|
| + Handle<Code> code =
|
| + isolate->builtins()->AsyncFunctionAwaitRejectClosure();
|
| + Handle<SharedFunctionInfo> info =
|
| + factory->NewSharedFunctionInfo(factory->empty_string(), code, false);
|
| + info->set_internal_formal_parameter_count(1);
|
| + info->set_length(1);
|
| + native_context->set_async_function_await_reject_shared_fun(*info);
|
| + }
|
| +
|
| + {
|
| + Handle<Code> code =
|
| + isolate->builtins()->AsyncFunctionAwaitResolveClosure();
|
| + Handle<SharedFunctionInfo> info =
|
| + factory->NewSharedFunctionInfo(factory->empty_string(), code, false);
|
| + info->set_internal_formal_parameter_count(1);
|
| + info->set_length(1);
|
| + native_context->set_async_function_await_resolve_shared_fun(*info);
|
| + }
|
| +
|
| + {
|
| + Handle<JSFunction> function =
|
| + SimpleCreateFunction(isolate, factory->empty_string(),
|
| + Builtins::kAsyncFunctionPromiseCreate, 0, false);
|
| + InstallWithIntrinsicDefaultProto(
|
| + isolate, function, Context::ASYNC_FUNCTION_PROMISE_CREATE_INDEX);
|
| + }
|
| +
|
| + {
|
| + Handle<JSFunction> function = SimpleCreateFunction(
|
| + isolate, factory->empty_string(),
|
| + Builtins::kAsyncFunctionPromiseRelease, 1, false);
|
| + InstallWithIntrinsicDefaultProto(
|
| + isolate, function, Context::ASYNC_FUNCTION_PROMISE_RELEASE_INDEX);
|
| }
|
| }
|
|
|
|
|