| Index: src/ia32/codegen-ia32.cc
|
| ===================================================================
|
| --- src/ia32/codegen-ia32.cc (revision 4230)
|
| +++ src/ia32/codegen-ia32.cc (working copy)
|
| @@ -7380,6 +7380,15 @@
|
| __ cdq(); // Sign-extend eax into edx:eax
|
| __ idiv(right_reg);
|
| if (op == Token::MOD) {
|
| + // Negative zero can arise as a negative divident with a zero result.
|
| + if (!node->no_negative_zero()) {
|
| + Label not_negative_zero;
|
| + __ test(edx, Operand(edx));
|
| + __ j(not_zero, ¬_negative_zero);
|
| + __ test(eax, Operand(eax));
|
| + unsafe_bailout_->Branch(negative);
|
| + __ bind(¬_negative_zero);
|
| + }
|
| Result edx_result(edx, NumberInfo::Integer32());
|
| edx_result.set_untagged_int32(true);
|
| frame_->Push(&edx_result);
|
|
|