diff options
Diffstat (limited to 'deps/v8/src/builtins/builtins-async-iterator-gen.cc')
-rw-r--r-- | deps/v8/src/builtins/builtins-async-iterator-gen.cc | 95 |
1 files changed, 6 insertions, 89 deletions
diff --git a/deps/v8/src/builtins/builtins-async-iterator-gen.cc b/deps/v8/src/builtins/builtins-async-iterator-gen.cc index 3672bda9d1..d4937c0e1f 100644 --- a/deps/v8/src/builtins/builtins-async-iterator-gen.cc +++ b/deps/v8/src/builtins/builtins-async-iterator-gen.cc @@ -36,13 +36,6 @@ class AsyncFromSyncBuiltinsAssembler : public AsyncBuiltinsAssembler { const char* operation_name, Label::Type reject_label_type = Label::kDeferred, Node* const initial_exception_value = nullptr); - void Generate_AsyncFromSyncIteratorMethodOptimized( - Node* const context, Node* const iterator, Node* const sent_value, - const SyncIteratorNodeGenerator& get_method, - const UndefinedMethodHandler& if_method_undefined, - const char* operation_name, - Label::Type reject_label_type = Label::kDeferred, - Node* const initial_exception_value = nullptr); void Generate_AsyncFromSyncIteratorMethod( Node* const context, Node* const iterator, Node* const sent_value, @@ -57,19 +50,6 @@ class AsyncFromSyncBuiltinsAssembler : public AsyncBuiltinsAssembler { context, iterator, sent_value, get_method, if_method_undefined, operation_name, reject_label_type, initial_exception_value); } - void Generate_AsyncFromSyncIteratorMethodOptimized( - Node* const context, Node* const iterator, Node* const sent_value, - Handle<String> name, const UndefinedMethodHandler& if_method_undefined, - const char* operation_name, - Label::Type reject_label_type = Label::kDeferred, - Node* const initial_exception_value = nullptr) { - auto get_method = [=](Node* const sync_iterator) { - return GetProperty(context, sync_iterator, name); - }; - return Generate_AsyncFromSyncIteratorMethodOptimized( - context, iterator, sent_value, get_method, if_method_undefined, - operation_name, reject_label_type, initial_exception_value); - } // Load "value" and "done" from an iterator result object. If an exception // is thrown at any point, jumps to te `if_exception` label with exception @@ -152,79 +132,16 @@ void AsyncFromSyncBuiltinsAssembler::Generate_AsyncFromSyncIteratorMethod( Node* done; std::tie(value, done) = LoadIteratorResult( context, native_context, iter_result, &reject_promise, &var_exception); - Node* const wrapper = AllocateAndInitJSPromise(context); - - // Perform ! Call(valueWrapperCapability.[[Resolve]], undefined, « - // throwValue »). - CallBuiltin(Builtins::kResolvePromise, context, wrapper, value); - - // Let onFulfilled be a new built-in function object as defined in - // Async Iterator Value Unwrap Functions. - // Set onFulfilled.[[Done]] to throwDone. - Node* const on_fulfilled = CreateUnwrapClosure(native_context, done); - - // Perform ! PerformPromiseThen(valueWrapperCapability.[[Promise]], - // onFulfilled, undefined, promiseCapability). - Return(CallBuiltin(Builtins::kPerformPromiseThen, context, wrapper, - on_fulfilled, UndefinedConstant(), promise)); - - BIND(&reject_promise); - { - Node* const exception = var_exception.value(); - CallBuiltin(Builtins::kRejectPromise, context, promise, exception, - TrueConstant()); - Return(promise); - } -} - -void AsyncFromSyncBuiltinsAssembler:: - Generate_AsyncFromSyncIteratorMethodOptimized( - Node* const context, Node* const iterator, Node* const sent_value, - const SyncIteratorNodeGenerator& get_method, - const UndefinedMethodHandler& if_method_undefined, - const char* operation_name, Label::Type reject_label_type, - Node* const initial_exception_value) { - Node* const native_context = LoadNativeContext(context); - Node* const promise = AllocateAndInitJSPromise(context); - - VARIABLE(var_exception, MachineRepresentation::kTagged, - initial_exception_value == nullptr ? UndefinedConstant() - : initial_exception_value); - Label reject_promise(this, reject_label_type); - - ThrowIfNotAsyncFromSyncIterator(context, iterator, &reject_promise, - &var_exception, operation_name); - - Node* const sync_iterator = - LoadObjectField(iterator, JSAsyncFromSyncIterator::kSyncIteratorOffset); - - Node* const method = get_method(sync_iterator); - - if (if_method_undefined) { - Label if_isnotundefined(this); - - GotoIfNot(IsUndefined(method), &if_isnotundefined); - if_method_undefined(native_context, promise, &reject_promise); - - BIND(&if_isnotundefined); - } - - Node* const iter_result = CallJS(CodeFactory::Call(isolate()), context, - method, sync_iterator, sent_value); - GotoIfException(iter_result, &reject_promise, &var_exception); - - Node* value; - Node* done; - std::tie(value, done) = LoadIteratorResult( - context, native_context, iter_result, &reject_promise, &var_exception); Node* const promise_fun = LoadContextElement(native_context, Context::PROMISE_FUNCTION_INDEX); CSA_ASSERT(this, IsConstructor(promise_fun)); - // Let valueWrapper be ? PromiseResolve(« value »). - Node* const valueWrapper = CallBuiltin(Builtins::kPromiseResolve, - native_context, promise_fun, value); + // Let valueWrapper be PromiseResolve(%Promise%, « value »). + Node* const value_wrapper = CallBuiltin(Builtins::kPromiseResolve, + native_context, promise_fun, value); + // IfAbruptRejectPromise(valueWrapper, promiseCapability). + GotoIfException(value_wrapper, &reject_promise, &var_exception); // Let onFulfilled be a new built-in function object as defined in // Async Iterator Value Unwrap Functions. @@ -233,7 +150,7 @@ void AsyncFromSyncBuiltinsAssembler:: // Perform ! PerformPromiseThen(valueWrapper, // onFulfilled, undefined, promiseCapability). - Return(CallBuiltin(Builtins::kPerformPromiseThen, context, valueWrapper, + Return(CallBuiltin(Builtins::kPerformPromiseThen, context, value_wrapper, on_fulfilled, UndefinedConstant(), promise)); BIND(&reject_promise); |