diff --git a/common.gypi b/common.gypi index 4da032d0723a5c..25c34fc477c4ec 100644 --- a/common.gypi +++ b/common.gypi @@ -29,7 +29,7 @@ # Reset this number to 0 on major V8 upgrades. # Increment by one for each non-official patch applied to deps/v8. - 'v8_embedder_string': '-node.8', + 'v8_embedder_string': '-node.9', # Enable disassembler for `--print-code` v8 options 'v8_enable_disassembler': 1, diff --git a/deps/v8/src/compiler/js-call-reducer.cc b/deps/v8/src/compiler/js-call-reducer.cc index 2acdf0945efc5e..45664593c5f3c8 100644 --- a/deps/v8/src/compiler/js-call-reducer.cc +++ b/deps/v8/src/compiler/js-call-reducer.cc @@ -3551,10 +3551,6 @@ Reduction JSCallReducer::ReduceJSCall(Node* node, return ReduceAsyncFunctionPromiseCreate(node); case Builtins::kAsyncFunctionPromiseRelease: return ReduceAsyncFunctionPromiseRelease(node); - case Builtins::kPromiseCapabilityDefaultReject: - return ReducePromiseCapabilityDefaultReject(node); - case Builtins::kPromiseCapabilityDefaultResolve: - return ReducePromiseCapabilityDefaultResolve(node); case Builtins::kPromiseInternalConstructor: return ReducePromiseInternalConstructor(node); case Builtins::kPromiseInternalReject: @@ -5310,120 +5306,6 @@ Reduction JSCallReducer::ReduceAsyncFunctionPromiseRelease(Node* node) { return Replace(value); } -// ES section #sec-promise-reject-functions -Reduction JSCallReducer::ReducePromiseCapabilityDefaultReject(Node* node) { - DCHECK_EQ(IrOpcode::kJSCall, node->opcode()); - Node* target = NodeProperties::GetValueInput(node, 0); - Node* resolution = node->op()->ValueInputCount() > 2 - ? NodeProperties::GetValueInput(node, 2) - : jsgraph()->UndefinedConstant(); - Node* frame_state = NodeProperties::GetFrameStateInput(node); - Node* effect = NodeProperties::GetEffectInput(node); - Node* control = NodeProperties::GetControlInput(node); - - // We need to execute in the {target}s context. - Node* context = effect = graph()->NewNode( - simplified()->LoadField(AccessBuilder::ForJSFunctionContext()), target, - effect, control); - - // Grab the promise closed over by {target}. - Node* promise = effect = - graph()->NewNode(simplified()->LoadField(AccessBuilder::ForContextSlot( - PromiseBuiltinsAssembler::kPromiseSlot)), - context, effect, control); - - // Check if the {promise} is still pending or already settled. - Node* check = graph()->NewNode(simplified()->ReferenceEqual(), promise, - jsgraph()->UndefinedConstant()); - Node* branch = - graph()->NewNode(common()->Branch(BranchHint::kFalse), check, control); - - Node* if_true = graph()->NewNode(common()->IfTrue(), branch); - Node* etrue = effect; - - Node* if_false = graph()->NewNode(common()->IfFalse(), branch); - Node* efalse = effect; - { - // Mark the {promise} as settled. - efalse = graph()->NewNode( - simplified()->StoreField(AccessBuilder::ForContextSlot( - PromiseBuiltinsAssembler::kPromiseSlot)), - context, jsgraph()->UndefinedConstant(), efalse, if_false); - - // Check if we should emit a debug event. - Node* debug_event = efalse = - graph()->NewNode(simplified()->LoadField(AccessBuilder::ForContextSlot( - PromiseBuiltinsAssembler::kDebugEventSlot)), - context, efalse, if_false); - - // Actually reject the {promise}. - efalse = - graph()->NewNode(javascript()->RejectPromise(), promise, resolution, - debug_event, context, frame_state, efalse, if_false); - } - - control = graph()->NewNode(common()->Merge(2), if_true, if_false); - effect = graph()->NewNode(common()->EffectPhi(2), etrue, efalse, control); - - Node* value = jsgraph()->UndefinedConstant(); - ReplaceWithValue(node, value, effect, control); - return Replace(value); -} - -// ES section #sec-promise-resolve-functions -Reduction JSCallReducer::ReducePromiseCapabilityDefaultResolve(Node* node) { - DCHECK_EQ(IrOpcode::kJSCall, node->opcode()); - Node* target = NodeProperties::GetValueInput(node, 0); - Node* resolution = node->op()->ValueInputCount() > 2 - ? NodeProperties::GetValueInput(node, 2) - : jsgraph()->UndefinedConstant(); - Node* frame_state = NodeProperties::GetFrameStateInput(node); - Node* effect = NodeProperties::GetEffectInput(node); - Node* control = NodeProperties::GetControlInput(node); - - // We need to execute in the {target}s context. - Node* context = effect = graph()->NewNode( - simplified()->LoadField(AccessBuilder::ForJSFunctionContext()), target, - effect, control); - - // Grab the promise closed over by {target}. - Node* promise = effect = - graph()->NewNode(simplified()->LoadField(AccessBuilder::ForContextSlot( - PromiseBuiltinsAssembler::kPromiseSlot)), - context, effect, control); - - // Check if the {promise} is still pending or already settled. - Node* check = graph()->NewNode(simplified()->ReferenceEqual(), promise, - jsgraph()->UndefinedConstant()); - Node* branch = - graph()->NewNode(common()->Branch(BranchHint::kFalse), check, control); - - Node* if_true = graph()->NewNode(common()->IfTrue(), branch); - Node* etrue = effect; - - Node* if_false = graph()->NewNode(common()->IfFalse(), branch); - Node* efalse = effect; - { - // Mark the {promise} as settled. - efalse = graph()->NewNode( - simplified()->StoreField(AccessBuilder::ForContextSlot( - PromiseBuiltinsAssembler::kPromiseSlot)), - context, jsgraph()->UndefinedConstant(), efalse, if_false); - - // Actually resolve the {promise}. - efalse = - graph()->NewNode(javascript()->ResolvePromise(), promise, resolution, - context, frame_state, efalse, if_false); - } - - control = graph()->NewNode(common()->Merge(2), if_true, if_false); - effect = graph()->NewNode(common()->EffectPhi(2), etrue, efalse, control); - - Node* value = jsgraph()->UndefinedConstant(); - ReplaceWithValue(node, value, effect, control); - return Replace(value); -} - Node* JSCallReducer::CreateArtificialFrameState( Node* node, Node* outer_frame_state, int parameter_count, BailoutId bailout_id, FrameStateType frame_state_type, diff --git a/deps/v8/src/compiler/js-call-reducer.h b/deps/v8/src/compiler/js-call-reducer.h index 04a9cf920ec6d0..15228032cf9611 100644 --- a/deps/v8/src/compiler/js-call-reducer.h +++ b/deps/v8/src/compiler/js-call-reducer.h @@ -132,8 +132,6 @@ class V8_EXPORT_PRIVATE JSCallReducer final : public AdvancedReducer { Reduction ReduceAsyncFunctionPromiseCreate(Node* node); Reduction ReduceAsyncFunctionPromiseRelease(Node* node); - Reduction ReducePromiseCapabilityDefaultReject(Node* node); - Reduction ReducePromiseCapabilityDefaultResolve(Node* node); Reduction ReducePromiseConstructor(Node* node); Reduction ReducePromiseInternalConstructor(Node* node); Reduction ReducePromiseInternalReject(Node* node);