| Index: src/x87/lithium-codegen-x87.cc
|
| diff --git a/src/x87/lithium-codegen-x87.cc b/src/x87/lithium-codegen-x87.cc
|
| index ed4755b995cc319fb57958c6c9f1e30ffb6010bc..aca3992bc67f1f8f4ad8880034c44091dbebd8ff 100644
|
| --- a/src/x87/lithium-codegen-x87.cc
|
| +++ b/src/x87/lithium-codegen-x87.cc
|
| @@ -3975,9 +3975,8 @@ void LCodeGen::DoMathRound(LMathRound* instr) {
|
| __ fistp_s(MemOperand(esp, 0));
|
| // Check overflow.
|
| __ X87CheckIA();
|
| - __ RecordComment("D2I conversion overflow");
|
| __ pop(result);
|
| - DeoptimizeIf(equal, instr);
|
| + DeoptimizeIf(equal, instr, "conversion overflow");
|
| __ fnclex();
|
| // Restore round mode.
|
| __ X87SetRC(0x0000);
|
| @@ -3994,8 +3993,7 @@ void LCodeGen::DoMathRound(LMathRound* instr) {
|
| // If the sign is positive, we return +0.
|
| __ fld(0);
|
| __ FXamSign();
|
| - __ RecordComment("Minus zero");
|
| - DeoptimizeIf(not_zero, instr);
|
| + DeoptimizeIf(not_zero, instr, "minus zero");
|
| }
|
| __ Move(result, Immediate(0));
|
| __ jmp(&done);
|
| @@ -4011,9 +4009,8 @@ void LCodeGen::DoMathRound(LMathRound* instr) {
|
| __ fistp_s(MemOperand(esp, 0));
|
| // Check overflow.
|
| __ X87CheckIA();
|
| - __ RecordComment("D2I conversion overflow");
|
| __ pop(result);
|
| - DeoptimizeIf(equal, instr);
|
| + DeoptimizeIf(equal, instr, "conversion overflow");
|
| __ fnclex();
|
| // Restore round mode.
|
| __ X87SetRC(0x0000);
|
| @@ -5186,16 +5183,14 @@ void LCodeGen::DoDeferredTaggedToI(LTaggedToI* instr, Label* done) {
|
|
|
| __ bind(&check_false);
|
| __ cmp(input_reg, factory()->false_value());
|
| - __ RecordComment("Deferred TaggedToI: cannot truncate");
|
| - DeoptimizeIf(not_equal, instr);
|
| + DeoptimizeIf(not_equal, instr, "cannot truncate");
|
| __ Move(input_reg, Immediate(0));
|
| } else {
|
| // TODO(olivf) Converting a number on the fpu is actually quite slow. We
|
| // should first try a fast conversion and then bailout to this slow case.
|
| __ cmp(FieldOperand(input_reg, HeapObject::kMapOffset),
|
| isolate()->factory()->heap_number_map());
|
| - __ RecordComment("Deferred TaggedToI: not a heap number");
|
| - DeoptimizeIf(not_equal, instr);
|
| + DeoptimizeIf(not_equal, instr, "not a heap number");
|
|
|
| __ sub(esp, Immediate(kPointerSize));
|
| __ fld_d(FieldOperand(input_reg, HeapNumber::kValueOffset));
|
| @@ -5211,14 +5206,12 @@ void LCodeGen::DoDeferredTaggedToI(LTaggedToI* instr, Label* done) {
|
|
|
| __ j(equal, &no_precision_lost, Label::kNear);
|
| __ fstp(0);
|
| - __ RecordComment("Deferred TaggedToI: lost precision");
|
| - DeoptimizeIf(no_condition, instr);
|
| + DeoptimizeIf(no_condition, instr, "lost precision");
|
| __ bind(&no_precision_lost);
|
|
|
| __ j(parity_odd, ¬_nan);
|
| __ fstp(0);
|
| - __ RecordComment("Deferred TaggedToI: NaN");
|
| - DeoptimizeIf(no_condition, instr);
|
| + DeoptimizeIf(no_condition, instr, "NaN");
|
| __ bind(¬_nan);
|
|
|
| __ test(input_reg, Operand(input_reg));
|
| @@ -5233,17 +5226,14 @@ void LCodeGen::DoDeferredTaggedToI(LTaggedToI* instr, Label* done) {
|
| __ fstp_s(Operand(esp, 0));
|
| __ pop(input_reg);
|
| __ test(input_reg, Operand(input_reg));
|
| - __ RecordComment("Deferred TaggedToI: minus zero");
|
| - DeoptimizeIf(not_zero, instr);
|
| + DeoptimizeIf(not_zero, instr, "minus zero");
|
| } else {
|
| __ fist_s(MemOperand(esp, 0));
|
| __ fild_s(MemOperand(esp, 0));
|
| __ FCmp();
|
| __ pop(input_reg);
|
| - __ RecordComment("Deferred TaggedToI: lost precision");
|
| - DeoptimizeIf(not_equal, instr);
|
| - __ RecordComment("Deferred TaggedToI: NaN");
|
| - DeoptimizeIf(parity_even, instr);
|
| + DeoptimizeIf(not_equal, instr, "lost precision");
|
| + DeoptimizeIf(parity_even, instr, "NaN");
|
| }
|
| }
|
| }
|
|
|