Index: src/compiler/ast-graph-builder.cc |
diff --git a/src/compiler/ast-graph-builder.cc b/src/compiler/ast-graph-builder.cc |
index 2a4bdd900eee2e95c8595b50c1b1175d74b05b75..41ae47ccb4c4efd7a82553c5e48e993a313942b8 100644 |
--- a/src/compiler/ast-graph-builder.cc |
+++ b/src/compiler/ast-graph-builder.cc |
@@ -3377,7 +3377,7 @@ Node* AstGraphBuilder::BuildThrowError(Node* exception, BailoutId bailout_id) { |
PrepareFrameState(call, bailout_id); |
Node* control = NewNode(common()->Throw(), call); |
UpdateControlDependencyToLeaveFunction(control); |
- return control; |
+ return call; |
} |
@@ -3390,7 +3390,7 @@ Node* AstGraphBuilder::BuildThrowReferenceError(Variable* variable, |
PrepareFrameState(call, bailout_id); |
Node* control = NewNode(common()->Throw(), call); |
UpdateControlDependencyToLeaveFunction(control); |
- return control; |
+ return call; |
} |
@@ -3401,7 +3401,7 @@ Node* AstGraphBuilder::BuildThrowConstAssignError(BailoutId bailout_id) { |
PrepareFrameState(call, bailout_id); |
Node* control = NewNode(common()->Throw(), call); |
UpdateControlDependencyToLeaveFunction(control); |
- return control; |
+ return call; |
} |
@@ -3412,7 +3412,7 @@ Node* AstGraphBuilder::BuildThrowStaticPrototypeError(BailoutId bailout_id) { |
PrepareFrameState(call, bailout_id); |
Node* control = NewNode(common()->Throw(), call); |
UpdateControlDependencyToLeaveFunction(control); |
- return control; |
+ return call; |
} |
@@ -3556,14 +3556,15 @@ Node* AstGraphBuilder::MakeNode(const Operator* op, int value_input_count, |
*current_input++ = environment_->GetControlDependency(); |
} |
result = graph()->NewNode(op, input_count_with_deps, buffer, incomplete); |
- if (has_effect) { |
- environment_->UpdateEffectDependency(result); |
- } |
if (!environment()->IsMarkedAsUnreachable()) { |
// Update the current control dependency for control-producing nodes. |
if (NodeProperties::IsControl(result)) { |
environment_->UpdateControlDependency(result); |
} |
+ // Update the current effect dependency for effect-producing nodes. |
+ if (result->op()->EffectOutputCount() > 0) { |
+ environment_->UpdateEffectDependency(result); |
+ } |
// Add implicit exception continuation for throwing nodes. |
if (!result->op()->HasProperty(Operator::kNoThrow) && inside_try_scope) { |
// Conservative prediction whether caught locally. |