| Index: src/mips64/lithium-codegen-mips64.cc
|
| diff --git a/src/mips64/lithium-codegen-mips64.cc b/src/mips64/lithium-codegen-mips64.cc
|
| index b50d7c266df5a1472ffda325b426054d2d226c04..1a3d8fb62812749419bca06a14f71aa0b6353a90 100644
|
| --- a/src/mips64/lithium-codegen-mips64.cc
|
| +++ b/src/mips64/lithium-codegen-mips64.cc
|
| @@ -4973,11 +4973,12 @@ void LCodeGen::DoDeferredTaggedToI(LTaggedToI* instr) {
|
|
|
| __ bind(&check_false);
|
| __ LoadRoot(at, Heap::kFalseValueRootIndex);
|
| + __ RecordComment("Deferred TaggedToI: cannot truncate");
|
| DeoptimizeIf(ne, instr->environment(), scratch2, Operand(at));
|
| __ Branch(USE_DELAY_SLOT, &done);
|
| __ mov(input_reg, zero_reg); // In delay slot.
|
| } else {
|
| - // Deoptimize if we don't have a heap number.
|
| + __ RecordComment("Deferred TaggedToI: not a heap number");
|
| DeoptimizeIf(ne, instr->environment(), scratch1, Operand(at));
|
|
|
| // Load the double value.
|
| @@ -4993,7 +4994,7 @@ void LCodeGen::DoDeferredTaggedToI(LTaggedToI* instr) {
|
| except_flag,
|
| kCheckForInexactConversion);
|
|
|
| - // Deopt if the operation did not succeed.
|
| + __ RecordComment("Deferred TaggedToI: lost precision or NaN");
|
| DeoptimizeIf(ne, instr->environment(), except_flag, Operand(zero_reg));
|
|
|
| if (instr->hydrogen()->CheckFlag(HValue::kBailoutOnMinusZero)) {
|
| @@ -5001,6 +5002,7 @@ void LCodeGen::DoDeferredTaggedToI(LTaggedToI* instr) {
|
|
|
| __ mfhc1(scratch1, double_scratch); // Get exponent/sign bits.
|
| __ And(scratch1, scratch1, Operand(HeapNumber::kSignMask));
|
| + __ RecordComment("Deferred TaggedToI: minus zero");
|
| DeoptimizeIf(ne, instr->environment(), scratch1, Operand(zero_reg));
|
| }
|
| }
|
|
|