diff --git a/js/src/xpconnect/tests/unit/xpcshell.ini b/js/src/xpconnect/tests/unit/xpcshell.ini index 9433cb806cbc..64feaa3a6b52 100644 --- a/js/src/xpconnect/tests/unit/xpcshell.ini +++ b/js/src/xpconnect/tests/unit/xpcshell.ini @@ -22,8 +22,4 @@ fail-if = os == "android" [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" diff --git a/xpcom/reflect/xptcall/src/md/win32/xptcstubs_x86_64.cpp b/xpcom/reflect/xptcall/src/md/win32/xptcstubs_x86_64.cpp index 3039e3f30513..bb921ca04763 100644 --- a/xpcom/reflect/xptcall/src/md/win32/xptcstubs_x86_64.cpp +++ b/xpcom/reflect/xptcall/src/md/win32/xptcstubs_x86_64.cpp @@ -159,7 +159,10 @@ PrepareAndDispatch(nsXPTCStubBase* self, PRUint32 methodIndex, PRUint64* args, 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;