| Index: src/compiler/escape-analysis.cc | 
| diff --git a/src/compiler/escape-analysis.cc b/src/compiler/escape-analysis.cc | 
| index 9ffdeb3e6d50e9d53523251cf592e21d28bb3c37..2d3b818cc3dce8aa54a63a9e1f1575027f6302b8 100644 | 
| --- a/src/compiler/escape-analysis.cc | 
| +++ b/src/compiler/escape-analysis.cc | 
| @@ -1517,30 +1517,33 @@ | 
| DCHECK_EQ(node->opcode(), IrOpcode::kCheckMaps); | 
| ForwardVirtualState(node); | 
| Node* checked = ResolveReplacement(NodeProperties::GetValueInput(node, 0)); | 
| -  VirtualState* state = virtual_states_[node->id()]; | 
| -  if (VirtualObject* object = GetVirtualObject(state, checked)) { | 
| -    if (!object->IsTracked()) { | 
| -      if (status_analysis_->SetEscaped(node)) { | 
| -        TRACE( | 
| -            "Setting #%d (%s) to escaped because checked object #%i is not " | 
| -            "tracked\n", | 
| -            node->id(), node->op()->mnemonic(), object->id()); | 
| -      } | 
| -      return; | 
| -    } | 
| -    CheckMapsParameters params = CheckMapsParametersOf(node->op()); | 
| - | 
| -    Node* value = object->GetField(HeapObject::kMapOffset / kPointerSize); | 
| -    if (value) { | 
| -      value = ResolveReplacement(value); | 
| -      // TODO(tebbi): We want to extend this beyond constant folding with a | 
| -      // CheckMapsValue operator that takes the load-eliminated map value as | 
| -      // input. | 
| -      if (value->opcode() == IrOpcode::kHeapConstant && | 
| -          params.maps().contains(ZoneHandleSet<Map>( | 
| -              Handle<Map>::cast(OpParameter<Handle<HeapObject>>(value))))) { | 
| -        TRACE("CheckMaps #%i seems to be redundant (until now).\n", node->id()); | 
| +  if (FLAG_turbo_experimental) { | 
| +    VirtualState* state = virtual_states_[node->id()]; | 
| +    if (VirtualObject* object = GetVirtualObject(state, checked)) { | 
| +      if (!object->IsTracked()) { | 
| +        if (status_analysis_->SetEscaped(node)) { | 
| +          TRACE( | 
| +              "Setting #%d (%s) to escaped because checked object #%i is not " | 
| +              "tracked\n", | 
| +              node->id(), node->op()->mnemonic(), object->id()); | 
| +        } | 
| return; | 
| +      } | 
| +      CheckMapsParameters params = CheckMapsParametersOf(node->op()); | 
| + | 
| +      Node* value = object->GetField(HeapObject::kMapOffset / kPointerSize); | 
| +      if (value) { | 
| +        value = ResolveReplacement(value); | 
| +        // TODO(tebbi): We want to extend this beyond constant folding with a | 
| +        // CheckMapsValue operator that takes the load-eliminated map value as | 
| +        // input. | 
| +        if (value->opcode() == IrOpcode::kHeapConstant && | 
| +            params.maps().contains(ZoneHandleSet<Map>( | 
| +                Handle<Map>::cast(OpParameter<Handle<HeapObject>>(value))))) { | 
| +          TRACE("CheckMaps #%i seems to be redundant (until now).\n", | 
| +                node->id()); | 
| +          return; | 
| +        } | 
| } | 
| } | 
| } | 
|  |