| Index: src/compiler/js-native-context-specialization.cc | 
| diff --git a/src/compiler/js-native-context-specialization.cc b/src/compiler/js-native-context-specialization.cc | 
| index e6f4194cfeb5173a767ec7b21d5d48b738a9d56b..d95b2101789f4781899e9441c32513d8712417a2 100644 | 
| --- a/src/compiler/js-native-context-specialization.cc | 
| +++ b/src/compiler/js-native-context-specialization.cc | 
| @@ -161,7 +161,8 @@ Reduction JSNativeContextSpecialization::ReduceNamedAccess( | 
| receiver, effect, control); | 
| } else { | 
| // Monomorphic property access. | 
| -      effect = BuildCheckHeapObject(receiver, effect, control); | 
| +      receiver = effect = graph()->NewNode(simplified()->CheckHeapObject(), | 
| +                                           receiver, effect, control); | 
| effect = BuildCheckMaps(receiver, effect, control, | 
| access_info.receiver_maps()); | 
| } | 
| @@ -199,7 +200,8 @@ Reduction JSNativeContextSpecialization::ReduceNamedAccess( | 
| receiverissmi_control = graph()->NewNode(common()->IfTrue(), branch); | 
| receiverissmi_effect = effect; | 
| } else { | 
| -      effect = BuildCheckHeapObject(receiver, effect, control); | 
| +      receiver = effect = graph()->NewNode(simplified()->CheckHeapObject(), | 
| +                                           receiver, effect, control); | 
| } | 
|  | 
| // Load the {receiver} map. The resulting effect is the dominating effect | 
| @@ -507,7 +509,8 @@ Reduction JSNativeContextSpecialization::ReduceElementAccess( | 
| } | 
|  | 
| // Ensure that {receiver} is a heap object. | 
| -    effect = BuildCheckHeapObject(receiver, effect, control); | 
| +    receiver = effect = graph()->NewNode(simplified()->CheckHeapObject(), | 
| +                                         receiver, effect, control); | 
|  | 
| // Check for the monomorphic case. | 
| if (access_infos.size() == 1) { | 
| @@ -1449,33 +1452,6 @@ Node* JSNativeContextSpecialization::BuildCheckMaps( | 
| inputs); | 
| } | 
|  | 
| -Node* JSNativeContextSpecialization::BuildCheckHeapObject(Node* receiver, | 
| -                                                          Node* effect, | 
| -                                                          Node* control) { | 
| -  switch (receiver->opcode()) { | 
| -    case IrOpcode::kHeapConstant: | 
| -    case IrOpcode::kJSCreate: | 
| -    case IrOpcode::kJSCreateArguments: | 
| -    case IrOpcode::kJSCreateArray: | 
| -    case IrOpcode::kJSCreateClosure: | 
| -    case IrOpcode::kJSCreateIterResultObject: | 
| -    case IrOpcode::kJSCreateLiteralArray: | 
| -    case IrOpcode::kJSCreateLiteralObject: | 
| -    case IrOpcode::kJSCreateLiteralRegExp: | 
| -    case IrOpcode::kJSConvertReceiver: | 
| -    case IrOpcode::kJSToName: | 
| -    case IrOpcode::kJSToString: | 
| -    case IrOpcode::kJSToObject: | 
| -    case IrOpcode::kJSTypeOf: { | 
| -      return effect; | 
| -    } | 
| -    default: { | 
| -      return graph()->NewNode(simplified()->CheckHeapObject(), receiver, effect, | 
| -                              control); | 
| -    } | 
| -  } | 
| -} | 
| - | 
| void JSNativeContextSpecialization::AssumePrototypesStable( | 
| std::vector<Handle<Map>> const& receiver_maps, Handle<JSObject> holder) { | 
| // Determine actual holder and perform prototype chain checks. | 
|  |