https://bugs.webkit.org/show_bug.cgi?id=31050

Patch by Zoltan Herczeg <zherczeg@inf.u-szeged.hu> on 2009-11-16
Reviewed by Gavin Barraclough.

Minor fixes for JSVALUE32_64: branchConvertDoubleToInt32
failed on a CortexA8 CPU, but not on a simulator; and
JITCall.cpp modifications was somehow not committed to mainline.

* assembler/ARMAssembler.h:
(JSC::ARMAssembler::fmrs_r):
* assembler/MacroAssemblerARM.h:
(JSC::MacroAssemblerARM::branchConvertDoubleToInt32):
* jit/JITCall.cpp:
(JSC::JIT::compileOpCall):



git-svn-id: http://svn.webkit.org/repository/webkit/trunk@51067 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/JavaScriptCore/assembler/MacroAssemblerARM.h b/JavaScriptCore/assembler/MacroAssemblerARM.h
index ed16db5..24e2e11 100644
--- a/JavaScriptCore/assembler/MacroAssemblerARM.h
+++ b/JavaScriptCore/assembler/MacroAssemblerARM.h
@@ -829,12 +829,12 @@
     // (specifically, in this case, 0).
     void branchConvertDoubleToInt32(FPRegisterID src, RegisterID dest, JumpList& failureCases, FPRegisterID fpTemp)
     {
-        m_assembler.ftosid_r(src, ARMRegisters::SD0);
-        m_assembler.fmrs_r(ARMRegisters::SD0, dest);
+        m_assembler.ftosid_r(ARMRegisters::SD0, src);
+        m_assembler.fmrs_r(dest, ARMRegisters::SD0);
 
         // Convert the integer result back to float & compare to the original value - if not equal or unordered (NaN) then jump.
         m_assembler.fsitod_r(ARMRegisters::SD0, ARMRegisters::SD0);
-        failureCases.append(branchDouble(DoubleNotEqual, src, ARMRegisters::SD0));
+        failureCases.append(branchDouble(DoubleNotEqualOrUnordered, src, ARMRegisters::SD0));
 
         // If the result is zero, it might have been -0.0, and 0.0 equals to -0.0
         failureCases.append(branchTest32(Zero, dest));