Reviewers: Erik Corry, Description: Avoid trashing the FPSCR when calculating Math.floor
The restoring of FPSCR could restore a random value as the restore point could
be jumped to from before FPSCR was loaded. Please review this at http://codereview.chromium.org/6344002/ SVN Base: http://v8.googlecode.com/svn/branches/bleeding_edge/ Affected files: M src/arm/stub-cache-arm.cc Index: src/arm/stub-cache-arm.cc =================================================================== --- src/arm/stub-cache-arm.cc (revision 6330) +++ src/arm/stub-cache-arm.cc (working copy) @@ -1952,7 +1952,7 @@ __ cmp(r7, Operand(HeapNumber::kMantissaBits)); // If greater or equal, the argument is already round and in r0. __ b(&restore_fpscr_and_return, ge); - __ b(&slow); + __ b(&wont_fit_smi); __ bind(&no_vfp_exception); // Move the result back to general purpose register r0. @@ -1980,10 +1980,10 @@ __ Ret(); __ bind(&wont_fit_smi); - __ bind(&slow); // Restore FPCSR and fall to slow case. __ vmsr(r3); + __ bind(&slow); // Tail call the full function. We do not have to patch the receiver // because the function makes no use of it. __ InvokeFunction(function, arguments(), JUMP_FUNCTION); -- v8-dev mailing list [email protected] http://groups.google.com/group/v8-dev
