Ignore:
Timestamp:
Jul 27, 2011, 12:12:38 AM (14 years ago)
Author:
[email protected]
Message:

DFG JIT speculation failure code performs incorrect conversions in
the case where two registers need to be swapped.
https://bugs.webkit.org/show_bug.cgi?id=65233

Patch by Filip Pizlo <[email protected]> on 2011-07-27
Reviewed by Gavin Barraclough.

  • dfg/DFGJITCompiler.cpp:

(JSC::DFG::GeneralizedRegister::swapWith):

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/dfg/DFGJITCompiler.cpp

    r91804 r91825  
    245245        jit.swap(gpr(), other.gpr());
    246246       
    247         if (UNLIKELY(needDataFormatConversion(myDataFormat, myNewDataFormat))) {
    248             if (myDataFormat == DataFormatInteger)
     247        if (UNLIKELY(needDataFormatConversion(otherDataFormat, myNewDataFormat))) {
     248            if (otherDataFormat == DataFormatInteger)
    249249                jit.orPtr(GPRInfo::tagTypeNumberRegister, gpr());
    250250            else if (myNewDataFormat == DataFormatInteger)
     
    252252        }
    253253       
    254         if (UNLIKELY(needDataFormatConversion(otherDataFormat, myNewDataFormat))) {
    255             if (otherDataFormat == DataFormatInteger)
     254        if (UNLIKELY(needDataFormatConversion(myDataFormat, otherNewDataFormat))) {
     255            if (myDataFormat == DataFormatInteger)
    256256                jit.orPtr(GPRInfo::tagTypeNumberRegister, other.gpr());
    257257            else if (otherNewDataFormat == DataFormatInteger)
Note: See TracChangeset for help on using the changeset viewer.