| Index: src/arm64/lithium-codegen-arm64.cc
|
| diff --git a/src/arm64/lithium-codegen-arm64.cc b/src/arm64/lithium-codegen-arm64.cc
|
| index a2127e931acd7c1f6f269f259f19f3456c04c134..06706e5c83a0e1e438df0cba28572bde4e23df5d 100644
|
| --- a/src/arm64/lithium-codegen-arm64.cc
|
| +++ b/src/arm64/lithium-codegen-arm64.cc
|
| @@ -5645,10 +5645,9 @@ void LCodeGen::DoDeferredTaggedToI(LTaggedToI* instr,
|
| instr->environment());
|
| } else {
|
| Register output = ToRegister32(instr->result());
|
| -
|
| DoubleRegister dbl_scratch2 = ToDoubleRegister(temp2);
|
|
|
| - // Deoptimized if it's not a heap number.
|
| + __ RecordComment("Deferred TaggedToI: not a heap number");
|
| DeoptimizeIfNotRoot(scratch1, Heap::kHeapNumberMapRootIndex,
|
| instr->environment());
|
|
|
| @@ -5656,12 +5655,14 @@ void LCodeGen::DoDeferredTaggedToI(LTaggedToI* instr,
|
| // function. If the result is out of range, branch to deoptimize.
|
| __ Ldr(dbl_scratch1, FieldMemOperand(input, HeapNumber::kValueOffset));
|
| __ TryRepresentDoubleAsInt32(output, dbl_scratch1, dbl_scratch2);
|
| + __ RecordComment("Deferred TaggedToI: lost precision or NaN");
|
| DeoptimizeIf(ne, instr->environment());
|
|
|
| if (instr->hydrogen()->CheckFlag(HValue::kBailoutOnMinusZero)) {
|
| __ Cmp(output, 0);
|
| __ B(ne, &done);
|
| __ Fmov(scratch1, dbl_scratch1);
|
| + __ RecordComment("Deferred TaggedToI: minus zero");
|
| DeoptimizeIfNegative(scratch1, instr->environment());
|
| }
|
| }
|
|
|