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); |
} |