Changeset 172962 in webkit


Ignore:
Timestamp:
Aug 26, 2014 10:34:21 AM (10 years ago)
Author:
msaboff@apple.com
Message:

REGRESSION(r172794) + 32Bit build: for-in-base-reassigned-later-and-change-structure.js fail with NaN result
https://bugs.webkit.org/show_bug.cgi?id=136187

Reviewed by Mark Hahnenberg.

Added two arg version for 32 bit builds of callOperation(J_JITOperation_ECJ, ...) that
doesn't require a tag for the second argument, instead it fills in a CellTag. This is
used for the slow case of the GetDirectPname case in SpeculativeJIT::compile since we
haven't set up a register with a tag and we know that argument 2 is a cell.

  • dfg/DFGSpeculativeJIT.h:

(JSC::DFG::SpeculativeJIT::callOperation): New version with implicit CellTag.

  • dfg/DFGSpeculativeJIT32_64.cpp:

(JSC::DFG::SpeculativeJIT::compile): Eliminated extraneous filling of the scratchGPR
with CellTag as it wasn't in the control flow for the slow path that needed the tag.
Instead changed to calling new version of callOperation with an implicit CellTag.

Location:
trunk/Source/JavaScriptCore
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/ChangeLog

    r172961 r172962  
     12014-08-26  Michael Saboff  <msaboff@apple.com>
     2
     3        REGRESSION(r172794) + 32Bit build: for-in-base-reassigned-later-and-change-structure.js fail with NaN result
     4        https://bugs.webkit.org/show_bug.cgi?id=136187
     5
     6        Reviewed by Mark Hahnenberg.
     7
     8        Added two arg version for 32 bit builds of callOperation(J_JITOperation_ECJ, ...) that
     9        doesn't require a tag for the second argument, instead it fills in a CellTag.  This is
     10        used for the slow case of the GetDirectPname case in SpeculativeJIT::compile since we
     11        haven't set up a register with a tag and we know that argument 2 is a cell.
     12
     13        * dfg/DFGSpeculativeJIT.h:
     14        (JSC::DFG::SpeculativeJIT::callOperation): New version with implicit CellTag.
     15        * dfg/DFGSpeculativeJIT32_64.cpp:
     16        (JSC::DFG::SpeculativeJIT::compile): Eliminated extraneous filling of the scratchGPR
     17        with CellTag as it wasn't in the control flow for the slow path that needed the tag.
     18        Instead changed to calling new version of callOperation with an implicit CellTag.
     19
    1202014-08-26  Commit Queue  <commit-queue@webkit.org>
    221
  • trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT.h

    r172176 r172962  
    16941694    {
    16951695        m_jit.setupArgumentsWithExecState(arg1, arg2Payload, arg2Tag);
     1696        return appendCallWithExceptionCheckSetResult(operation, resultPayload, resultTag);
     1697    }
     1698    JITCompiler::Call callOperation(J_JITOperation_ECJ operation, GPRReg resultTag, GPRReg resultPayload, GPRReg arg1, GPRReg arg2Payload)
     1699    {
     1700        m_jit.setupArgumentsWithExecState(arg1, arg2Payload, MacroAssembler::TrustedImm32(JSValue::CellTag));
    16961701        return appendCallWithExceptionCheckSetResult(operation, resultPayload, resultTag);
    16971702    }
  • trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp

    r172961 r172962  
    47724772        done.link(&m_jit);
    47734773
    4774         m_jit.move(MacroAssembler::TrustedImm32(JSValue::CellTag), scratchGPR);
    4775         addSlowPathGenerator(slowPathCall(wrongStructure, this, operationGetByValCell, resultTagGPR, resultPayloadGPR, baseGPR, scratchGPR, propertyGPR));
     4774        addSlowPathGenerator(slowPathCall(wrongStructure, this, operationGetByValCell, resultTagGPR, resultPayloadGPR, baseGPR, propertyGPR));
    47764775#endif
    47774776
Note: See TracChangeset for help on using the changeset viewer.