Bug 689288 - xpcshell\tests\js\src\xpconnect\tests\unit\test_attributes.js and test_params.js are perma-orange on Win64. r=bsmedberg
authorMakoto Kato <m_kato@ga2.so-net.ne.jp>
Thu, 29 Sep 2011 18:43:50 +0900
changeset 77852 dec80ee84264081839bbf92870b66b696d9e3e76
parent 77851 3430e302d5bd75155f7d0c3742ea6cbb785f26ef
child 77853 c872ba5d7b05bd611ee5926e6b3f9e7432db913e
push id3
push userfelipc@gmail.com
push dateFri, 30 Sep 2011 20:09:13 +0000
reviewersbsmedberg
bugs689288
milestone10.0a1
Bug 689288 - xpcshell\tests\js\src\xpconnect\tests\unit\test_attributes.js and test_params.js are perma-orange on Win64. r=bsmedberg
js/src/xpconnect/tests/unit/xpcshell.ini
xpcom/reflect/xptcall/src/md/win32/xptcstubs_x86_64.cpp
--- a/js/src/xpconnect/tests/unit/xpcshell.ini
+++ b/js/src/xpconnect/tests/unit/xpcshell.ini
@@ -17,13 +17,9 @@ tail =
 [test_reflect_parse.js]
 [test_localeCompare.js]
 # Bug 676965: test fails consistently on Android
 fail-if = os == "android"
 [test_recursive_import.js]
 [test_xpcomutils.js]
 [test_unload.js]
 [test_attributes.js]
-# Bug 689288
-fail-if = os == "win" && processor == "x86_64"
 [test_params.js]
-# Bug 689288
-fail-if = os == "win" && processor == "x86_64"
--- a/xpcom/reflect/xptcall/src/md/win32/xptcstubs_x86_64.cpp
+++ b/xpcom/reflect/xptcall/src/md/win32/xptcstubs_x86_64.cpp
@@ -154,17 +154,20 @@ PrepareAndDispatch(nsXPTCStubBase* self,
             if (iCount < PARAM_GPR_COUNT)
                dp->val.u64  = (PRUint64)gprData[iCount++];
             else
                dp->val.u64  = *((PRUint64*)ap++);
             break;
 
         case nsXPTType::T_FLOAT:
              if (iCount < PARAM_FPR_COUNT)
-                dp->val.f  = (float)fprData[iCount++];
+                // The value in xmm register is already prepared to
+                // be retrieved as a float. Therefore, we pass the
+                // value verbatim, as a double without conversion.
+                dp->val.d  = (double)fprData[iCount++];
              else
                 dp->val.f  = *((float*)ap++);
              break;
 
         case nsXPTType::T_DOUBLE:
               if (iCount < PARAM_FPR_COUNT)
                  dp->val.d  = (double)fprData[iCount++];
               else