| Index: src/compiler/escape-analysis-reducer.cc
 | 
| diff --git a/src/compiler/escape-analysis-reducer.cc b/src/compiler/escape-analysis-reducer.cc
 | 
| index f7708f85da26d1d551f174c323e796fa67a85e6e..67edd433a29b96caba344ea8684d0db90bca8c54 100644
 | 
| --- a/src/compiler/escape-analysis-reducer.cc
 | 
| +++ b/src/compiler/escape-analysis-reducer.cc
 | 
| @@ -31,7 +31,7 @@ EscapeAnalysisReducer::EscapeAnalysisReducer(Editor* editor, JSGraph* jsgraph,
 | 
|        fully_reduced_(static_cast<int>(jsgraph->graph()->NodeCount() * 2), zone),
 | 
|        exists_virtual_allocate_(escape_analysis->ExistsVirtualAllocate()) {}
 | 
|  
 | 
| -Reduction EscapeAnalysisReducer::Reduce(Node* node) {
 | 
| +Reduction EscapeAnalysisReducer::ReduceNode(Node* node) {
 | 
|    if (node->id() < static_cast<NodeId>(fully_reduced_.length()) &&
 | 
|        fully_reduced_.Contains(node->id())) {
 | 
|      return NoChange();
 | 
| @@ -97,6 +97,14 @@ Reduction EscapeAnalysisReducer::Reduce(Node* node) {
 | 
|    return NoChange();
 | 
|  }
 | 
|  
 | 
| +Reduction EscapeAnalysisReducer::Reduce(Node* node) {
 | 
| +  Reduction reduction = ReduceNode(node);
 | 
| +  if (reduction.Changed() && node != reduction.replacement()) {
 | 
| +    escape_analysis()->SetReplacement(node, reduction.replacement());
 | 
| +  }
 | 
| +  return reduction;
 | 
| +}
 | 
| +
 | 
|  namespace {
 | 
|  
 | 
|  Node* MaybeGuard(JSGraph* jsgraph, Node* original, Node* replacement) {
 | 
| @@ -202,7 +210,7 @@ Reduction EscapeAnalysisReducer::ReduceReferenceEqual(Node* node) {
 | 
|          escape_analysis()->CompareVirtualObjects(left, right)) {
 | 
|        ReplaceWithValue(node, jsgraph()->TrueConstant());
 | 
|        TRACE("Replaced ref eq #%d with true\n", node->id());
 | 
| -      Replace(jsgraph()->TrueConstant());
 | 
| +      return Replace(jsgraph()->TrueConstant());
 | 
|      }
 | 
|      // Right-hand side is not a virtual object, or a different one.
 | 
|      ReplaceWithValue(node, jsgraph()->FalseConstant());
 | 
| 
 |