| Index: src/compiler/js-call-reducer.cc
 | 
| diff --git a/src/compiler/js-call-reducer.cc b/src/compiler/js-call-reducer.cc
 | 
| index fef55c5667385a4e5bd9112cbc5094e8a5392f1e..219368c758db9efd1060c8a3d1c90080c2f86545 100644
 | 
| --- a/src/compiler/js-call-reducer.cc
 | 
| +++ b/src/compiler/js-call-reducer.cc
 | 
| @@ -71,7 +71,6 @@ Reduction JSCallReducer::ReduceArrayConstructor(Node* node) {
 | 
|    size_t const arity = p.arity() - 2;
 | 
|    NodeProperties::ReplaceValueInput(node, target, 0);
 | 
|    NodeProperties::ReplaceValueInput(node, target, 1);
 | 
| -  NodeProperties::RemoveFrameStateInput(node, 1);
 | 
|    // TODO(bmeurer): We might need to propagate the tail call mode to
 | 
|    // the JSCreateArray operator, because an Array call in tail call
 | 
|    // position must always properly consume the parent stack frame.
 | 
| @@ -89,7 +88,6 @@ Reduction JSCallReducer::ReduceNumberConstructor(Node* node) {
 | 
|    DCHECK_LE(2u, p.arity());
 | 
|    Node* value = (p.arity() == 2) ? jsgraph()->ZeroConstant()
 | 
|                                   : NodeProperties::GetValueInput(node, 2);
 | 
| -  NodeProperties::RemoveFrameStateInput(node, 1);
 | 
|    NodeProperties::ReplaceValueInputs(node, value);
 | 
|    NodeProperties::ChangeOp(node, javascript()->ToNumber());
 | 
|    return Changed(node);
 | 
| @@ -220,9 +218,9 @@ Reduction JSCallReducer::ReduceJSCallFunction(Node* node) {
 | 
|    CallFunctionParameters const& p = CallFunctionParametersOf(node->op());
 | 
|    Node* target = NodeProperties::GetValueInput(node, 0);
 | 
|    Node* context = NodeProperties::GetContextInput(node);
 | 
| -  Node* frame_state = NodeProperties::GetFrameStateInput(node, 1);
 | 
|    Node* control = NodeProperties::GetControlInput(node);
 | 
|    Node* effect = NodeProperties::GetEffectInput(node);
 | 
| +  Node* frame_state = NodeProperties::FindFrameStateBefore(node);
 | 
|  
 | 
|    // Try to specialize JSCallFunction {node}s with constant {target}s.
 | 
|    HeapObjectMatcher m(target);
 | 
| @@ -233,7 +231,6 @@ Reduction JSCallReducer::ReduceJSCallFunction(Node* node) {
 | 
|  
 | 
|        // Raise a TypeError if the {target} is a "classConstructor".
 | 
|        if (IsClassConstructor(shared->kind())) {
 | 
| -        NodeProperties::RemoveFrameStateInput(node, 0);
 | 
|          NodeProperties::ReplaceValueInputs(node, target);
 | 
|          NodeProperties::ChangeOp(
 | 
|              node, javascript()->CallRuntime(
 | 
| @@ -370,9 +367,9 @@ Reduction JSCallReducer::ReduceJSCallConstruct(Node* node) {
 | 
|    Node* target = NodeProperties::GetValueInput(node, 0);
 | 
|    Node* new_target = NodeProperties::GetValueInput(node, arity + 1);
 | 
|    Node* context = NodeProperties::GetContextInput(node);
 | 
| -  Node* frame_state = NodeProperties::GetFrameStateInput(node, 1);
 | 
|    Node* effect = NodeProperties::GetEffectInput(node);
 | 
|    Node* control = NodeProperties::GetControlInput(node);
 | 
| +  Node* frame_state = NodeProperties::FindFrameStateBefore(node);
 | 
|  
 | 
|    // Try to specialize JSCallConstruct {node}s with constant {target}s.
 | 
|    HeapObjectMatcher m(target);
 | 
| @@ -382,11 +379,6 @@ Reduction JSCallReducer::ReduceJSCallConstruct(Node* node) {
 | 
|  
 | 
|        // Raise a TypeError if the {target} is not a constructor.
 | 
|        if (!function->IsConstructor()) {
 | 
| -        // Drop the lazy bailout location and use the eager bailout point for
 | 
| -        // the runtime function (actually as lazy bailout point). It doesn't
 | 
| -        // really matter which bailout location we use since we never really
 | 
| -        // go back after throwing the exception.
 | 
| -        NodeProperties::RemoveFrameStateInput(node, 0);
 | 
|          NodeProperties::ReplaceValueInputs(node, target);
 | 
|          NodeProperties::ChangeOp(
 | 
|              node, javascript()->CallRuntime(Runtime::kThrowCalledNonCallable));
 | 
| @@ -406,7 +398,6 @@ Reduction JSCallReducer::ReduceJSCallConstruct(Node* node) {
 | 
|          }
 | 
|  
 | 
|          // Turn the {node} into a {JSCreateArray} call.
 | 
| -        NodeProperties::RemoveFrameStateInput(node, 1);
 | 
|          for (int i = arity; i > 0; --i) {
 | 
|            NodeProperties::ReplaceValueInput(
 | 
|                node, NodeProperties::GetValueInput(node, i), i + 1);
 | 
| @@ -460,7 +451,6 @@ Reduction JSCallReducer::ReduceJSCallConstruct(Node* node) {
 | 
|      // Turn the {node} into a {JSCreateArray} call.
 | 
|      NodeProperties::ReplaceEffectInput(node, effect);
 | 
|      NodeProperties::ReplaceControlInput(node, control);
 | 
| -    NodeProperties::RemoveFrameStateInput(node, 1);
 | 
|      for (int i = arity; i > 0; --i) {
 | 
|        NodeProperties::ReplaceValueInput(
 | 
|            node, NodeProperties::GetValueInput(node, i), i + 1);
 | 
| 
 |