| Index: src/compiler/bytecode-graph-builder.cc | 
| diff --git a/src/compiler/bytecode-graph-builder.cc b/src/compiler/bytecode-graph-builder.cc | 
| index 93bc847c44f0906488040e3485bece34e187acf9..bc7fc77c8bd3dd85f852df179e35a23c3d80eb09 100644 | 
| --- a/src/compiler/bytecode-graph-builder.cc | 
| +++ b/src/compiler/bytecode-graph-builder.cc | 
| @@ -1217,6 +1217,24 @@ BinaryOperationHint BytecodeGraphBuilder::GetBinaryOperationHint( | 
| return hint; | 
| } | 
|  | 
| +// Helper function to create compare operation hint from the recorded type | 
| +// feedback. | 
| +CompareOperationHint BytecodeGraphBuilder::GetCompareOperationHint() { | 
| +  int slot_index = bytecode_iterator().GetIndexOperand(1); | 
| +  if (slot_index == 0) { | 
| +    return CompareOperationHint::kAny; | 
| +  } | 
| +  FeedbackVectorSlot slot = | 
| +      feedback_vector()->ToSlot(bytecode_iterator().GetIndexOperand(1)); | 
| +  DCHECK_EQ(FeedbackVectorSlotKind::GENERAL, feedback_vector()->GetKind(slot)); | 
| +  Object* feedback = feedback_vector()->Get(slot); | 
| +  CompareOperationHint hint = CompareOperationHint::kAny; | 
| +  if (feedback->IsSmi()) { | 
| +    hint = CompareOperationHintFromFeedback((Smi::cast(feedback))->value()); | 
| +  } | 
| +  return hint; | 
| +} | 
| + | 
| void BytecodeGraphBuilder::VisitAdd() { | 
| BuildBinaryOp( | 
| javascript()->Add(GetBinaryOperationHint(kBinaryOperationHintIndex))); | 
| @@ -1380,38 +1398,31 @@ void BytecodeGraphBuilder::BuildCompareOp(const Operator* js_op) { | 
| } | 
|  | 
| void BytecodeGraphBuilder::VisitTestEqual() { | 
| -  CompareOperationHint hint = CompareOperationHint::kAny; | 
| -  BuildCompareOp(javascript()->Equal(hint)); | 
| +  BuildCompareOp(javascript()->Equal(GetCompareOperationHint())); | 
| } | 
|  | 
| void BytecodeGraphBuilder::VisitTestNotEqual() { | 
| -  CompareOperationHint hint = CompareOperationHint::kAny; | 
| -  BuildCompareOp(javascript()->NotEqual(hint)); | 
| +  BuildCompareOp(javascript()->NotEqual(GetCompareOperationHint())); | 
| } | 
|  | 
| void BytecodeGraphBuilder::VisitTestEqualStrict() { | 
| -  CompareOperationHint hint = CompareOperationHint::kAny; | 
| -  BuildCompareOp(javascript()->StrictEqual(hint)); | 
| +  BuildCompareOp(javascript()->StrictEqual(GetCompareOperationHint())); | 
| } | 
|  | 
| void BytecodeGraphBuilder::VisitTestLessThan() { | 
| -  CompareOperationHint hint = CompareOperationHint::kAny; | 
| -  BuildCompareOp(javascript()->LessThan(hint)); | 
| +  BuildCompareOp(javascript()->LessThan(GetCompareOperationHint())); | 
| } | 
|  | 
| void BytecodeGraphBuilder::VisitTestGreaterThan() { | 
| -  CompareOperationHint hint = CompareOperationHint::kAny; | 
| -  BuildCompareOp(javascript()->GreaterThan(hint)); | 
| +  BuildCompareOp(javascript()->GreaterThan(GetCompareOperationHint())); | 
| } | 
|  | 
| void BytecodeGraphBuilder::VisitTestLessThanOrEqual() { | 
| -  CompareOperationHint hint = CompareOperationHint::kAny; | 
| -  BuildCompareOp(javascript()->LessThanOrEqual(hint)); | 
| +  BuildCompareOp(javascript()->LessThanOrEqual(GetCompareOperationHint())); | 
| } | 
|  | 
| void BytecodeGraphBuilder::VisitTestGreaterThanOrEqual() { | 
| -  CompareOperationHint hint = CompareOperationHint::kAny; | 
| -  BuildCompareOp(javascript()->GreaterThanOrEqual(hint)); | 
| +  BuildCompareOp(javascript()->GreaterThanOrEqual(GetCompareOperationHint())); | 
| } | 
|  | 
| void BytecodeGraphBuilder::VisitTestIn() { | 
|  |