Changeset 90799 in webkit


Ignore:
Timestamp:
Jul 11, 2011 6:10:07 PM (13 years ago)
Author:
commit-queue@webkit.org
Message:

DFG speculative JIT does not guard itself against floating point speculation
failures on non-floating-point constants.
https://bugs.webkit.org/show_bug.cgi?id=64330

Patch by Filip Pizlo <fpizlo@apple.com> on 2011-07-11
Reviewed by Gavin Barraclough.

Made fillSpeculateDouble immediate invoke terminateSpeculativeExecution() as
soon as it notices that it's speculating on something that is a non-numeric
JSConstant.

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::fillSpeculateDouble):

Location:
trunk/Source/JavaScriptCore
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/ChangeLog

    r90768 r90799  
     12011-07-11  Filip Pizlo  <fpizlo@apple.com>
     2
     3        DFG speculative JIT does not guard itself against floating point speculation
     4        failures on non-floating-point constants.
     5        https://bugs.webkit.org/show_bug.cgi?id=64330
     6
     7        Reviewed by Gavin Barraclough.
     8       
     9        Made fillSpeculateDouble immediate invoke terminateSpeculativeExecution() as
     10        soon as it notices that it's speculating on something that is a non-numeric
     11        JSConstant.
     12
     13        * dfg/DFGSpeculativeJIT.cpp:
     14        (JSC::DFG::SpeculativeJIT::fillSpeculateDouble):
     15
    1162011-07-11  Filip Pizlo  <fpizlo@apple.com>
    217
  • trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp

    r90768 r90799  
    207207                return fpr;
    208208            }
    209             ASSERT(isJSConstant(nodeIndex));
    210             JSValue jsValue = valueOfJSConstant(nodeIndex);
    211             m_jit.move(MacroAssembler::ImmPtr(JSValue::encode(jsValue)), gpr);
    212             m_gprs.retain(gpr, virtualRegister, SpillOrderConstant);
    213             info.fillJSValue(gpr, DataFormatJS);
    214             unlock(gpr);
     209            terminateSpeculativeExecution();
     210            return fprAllocate();
    215211        } else {
    216212            DataFormat spillFormat = info.spillFormat();
Note: See TracChangeset for help on using the changeset viewer.