| Index: src/compiler/ast-graph-builder.h | 
| diff --git a/src/compiler/ast-graph-builder.h b/src/compiler/ast-graph-builder.h | 
| index ce959b2d03424651321bf336248af725a52cf8e8..c7d604cada8a374fc622a3c1aed08eedbd1dea23 100644 | 
| --- a/src/compiler/ast-graph-builder.h | 
| +++ b/src/compiler/ast-graph-builder.h | 
| @@ -459,6 +459,7 @@ class AstGraphBuilder::Environment : public ZoneObject { | 
| // Mark this environment as being unreachable. | 
| void MarkAsUnreachable() { | 
| UpdateControlDependency(builder()->jsgraph()->DeadControl()); | 
| +    liveness_block_ = nullptr; | 
| } | 
| bool IsMarkedAsUnreachable() { | 
| return GetControlDependency()->opcode() == IrOpcode::kDead; | 
| @@ -468,20 +469,13 @@ class AstGraphBuilder::Environment : public ZoneObject { | 
| void Merge(Environment* other); | 
|  | 
| // Copies this environment at a control-flow split point. | 
| -  Environment* CopyForConditional() { return Copy(); } | 
| +  Environment* CopyForConditional(); | 
|  | 
| // Copies this environment to a potentially unreachable control-flow point. | 
| -  Environment* CopyAsUnreachable() { | 
| -    Environment* env = Copy(); | 
| -    env->MarkAsUnreachable(); | 
| -    return env; | 
| -  } | 
| +  Environment* CopyAsUnreachable(); | 
|  | 
| // Copies this environment at a loop header control-flow point. | 
| -  Environment* CopyForLoop(BitVector* assigned, bool is_osr = false) { | 
| -    PrepareForLoop(assigned, is_osr); | 
| -    return CopyAndShareLiveness(); | 
| -  } | 
| +  Environment* CopyForLoop(BitVector* assigned, bool is_osr = false); | 
|  | 
| private: | 
| AstGraphBuilder* builder_; | 
| @@ -496,8 +490,8 @@ class AstGraphBuilder::Environment : public ZoneObject { | 
| Node* locals_node_; | 
| Node* stack_node_; | 
|  | 
| -  explicit Environment(Environment* copy); | 
| -  Environment* Copy() { return new (zone()) Environment(this); } | 
| +  explicit Environment(Environment* copy, | 
| +                       LivenessAnalyzerBlock* liveness_block); | 
| Environment* CopyAndShareLiveness(); | 
| void UpdateStateValues(Node** state_values, int offset, int count); | 
| void UpdateStateValuesWithCache(Node** state_values, int offset, int count); | 
| @@ -508,6 +502,8 @@ class AstGraphBuilder::Environment : public ZoneObject { | 
| NodeVector* values() { return &values_; } | 
| NodeVector* contexts() { return &contexts_; } | 
| LivenessAnalyzerBlock* liveness_block() { return liveness_block_; } | 
| +  bool IsLivenessAnalysisEnabled(); | 
| +  bool IsLivenessBlockConsistent(); | 
|  | 
| // Prepare environment to be used as loop header. | 
| void PrepareForLoop(BitVector* assigned, bool is_osr = false); | 
|  |