| Index: src/compiler/arm/instruction-selector-arm.cc
 | 
| diff --git a/src/compiler/arm/instruction-selector-arm.cc b/src/compiler/arm/instruction-selector-arm.cc
 | 
| index 8fc0ddb915c93e6f8680a33bf0c2eecc2a124c88..417436a74a9e006e5aa54b93361289f0523ff3ee 100644
 | 
| --- a/src/compiler/arm/instruction-selector-arm.cc
 | 
| +++ b/src/compiler/arm/instruction-selector-arm.cc
 | 
| @@ -273,7 +273,7 @@ void VisitBinop(InstructionSelector* selector, Node* node,
 | 
|    opcode = cont->Encode(opcode);
 | 
|    if (cont->IsDeoptimize()) {
 | 
|      selector->EmitDeoptimize(opcode, output_count, outputs, input_count, inputs,
 | 
| -                             cont->frame_state());
 | 
| +                             cont->reason(), cont->frame_state());
 | 
|    } else {
 | 
|      selector->Emit(opcode, output_count, outputs, input_count, inputs);
 | 
|    }
 | 
| @@ -758,7 +758,7 @@ void VisitShift(InstructionSelector* selector, Node* node,
 | 
|    opcode = cont->Encode(opcode);
 | 
|    if (cont->IsDeoptimize()) {
 | 
|      selector->EmitDeoptimize(opcode, output_count, outputs, input_count, inputs,
 | 
| -                             cont->frame_state());
 | 
| +                             cont->reason(), cont->frame_state());
 | 
|    } else {
 | 
|      selector->Emit(opcode, output_count, outputs, input_count, inputs);
 | 
|    }
 | 
| @@ -1115,7 +1115,8 @@ void EmitInt32MulWithOverflow(InstructionSelector* selector, Node* node,
 | 
|                     g.Label(cont->true_block()), g.Label(cont->false_block()));
 | 
|    } else if (cont->IsDeoptimize()) {
 | 
|      InstructionOperand in[] = {temp_operand, result_operand, shift_31};
 | 
| -    selector->EmitDeoptimize(opcode, 0, nullptr, 3, in, cont->frame_state());
 | 
| +    selector->EmitDeoptimize(opcode, 0, nullptr, 3, in, cont->reason(),
 | 
| +                             cont->frame_state());
 | 
|    } else {
 | 
|      DCHECK(cont->IsSet());
 | 
|      selector->Emit(opcode, g.DefineAsRegister(cont->result()), temp_operand,
 | 
| @@ -1546,7 +1547,7 @@ void VisitCompare(InstructionSelector* selector, InstructionCode opcode,
 | 
|      selector->Emit(opcode, g.NoOutput(), left, right,
 | 
|                     g.Label(cont->true_block()), g.Label(cont->false_block()));
 | 
|    } else if (cont->IsDeoptimize()) {
 | 
| -    selector->EmitDeoptimize(opcode, g.NoOutput(), left, right,
 | 
| +    selector->EmitDeoptimize(opcode, g.NoOutput(), left, right, cont->reason(),
 | 
|                               cont->frame_state());
 | 
|    } else {
 | 
|      DCHECK(cont->IsSet());
 | 
| @@ -1632,7 +1633,7 @@ void VisitWordCompare(InstructionSelector* selector, Node* node,
 | 
|    opcode = cont->Encode(opcode);
 | 
|    if (cont->IsDeoptimize()) {
 | 
|      selector->EmitDeoptimize(opcode, output_count, outputs, input_count, inputs,
 | 
| -                             cont->frame_state());
 | 
| +                             cont->reason(), cont->frame_state());
 | 
|    } else {
 | 
|      selector->Emit(opcode, output_count, outputs, input_count, inputs);
 | 
|    }
 | 
| @@ -1759,7 +1760,7 @@ void VisitWordCompareZero(InstructionSelector* selector, Node* user,
 | 
|                     g.Label(cont->true_block()), g.Label(cont->false_block()));
 | 
|    } else if (cont->IsDeoptimize()) {
 | 
|      selector->EmitDeoptimize(opcode, g.NoOutput(), value_operand, value_operand,
 | 
| -                             cont->frame_state());
 | 
| +                             cont->reason(), cont->frame_state());
 | 
|    } else {
 | 
|      DCHECK(cont->IsSet());
 | 
|      selector->Emit(opcode, g.DefineAsRegister(cont->result()), value_operand,
 | 
| @@ -1776,14 +1777,14 @@ void InstructionSelector::VisitBranch(Node* branch, BasicBlock* tbranch,
 | 
|  }
 | 
|  
 | 
|  void InstructionSelector::VisitDeoptimizeIf(Node* node) {
 | 
| -  FlagsContinuation cont =
 | 
| -      FlagsContinuation::ForDeoptimize(kNotEqual, node->InputAt(1));
 | 
| +  FlagsContinuation cont = FlagsContinuation::ForDeoptimize(
 | 
| +      kNotEqual, DeoptimizeReasonOf(node->op()), node->InputAt(1));
 | 
|    VisitWordCompareZero(this, node, node->InputAt(0), &cont);
 | 
|  }
 | 
|  
 | 
|  void InstructionSelector::VisitDeoptimizeUnless(Node* node) {
 | 
| -  FlagsContinuation cont =
 | 
| -      FlagsContinuation::ForDeoptimize(kEqual, node->InputAt(1));
 | 
| +  FlagsContinuation cont = FlagsContinuation::ForDeoptimize(
 | 
| +      kEqual, DeoptimizeReasonOf(node->op()), node->InputAt(1));
 | 
|    VisitWordCompareZero(this, node, node->InputAt(0), &cont);
 | 
|  }
 | 
|  
 | 
| 
 |