Changeset 172959 in webkit


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

REGRESSION(r172794) + 32Bit build: ASSERT failures in for-in-tests.js tests.
https://bugs.webkit.org/show_bug.cgi?id=136165

Reviewed by Mark Hahnenberg.

Changed switch case GetDirectPname: to always use the slow path for X86 since it only has
6 registers available, but the code requires 7.

  • dfg/DFGSpeculativeJIT32_64.cpp:

(JSC::DFG::SpeculativeJIT::compile):

Location:
trunk/Source/JavaScriptCore
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/ChangeLog

    r172950 r172959  
     12014-08-26  Michael Saboff  <msaboff@apple.com>
     2
     3        REGRESSION(r172794) + 32Bit build: ASSERT failures in for-in-tests.js tests.
     4        https://bugs.webkit.org/show_bug.cgi?id=136165
     5
     6        Reviewed by Mark Hahnenberg.
     7
     8        Changed switch case GetDirectPname: to always use the slow path for X86 since it only has
     9        6 registers available, but the code requires 7.
     10
     11        * dfg/DFGSpeculativeJIT32_64.cpp:
     12        (JSC::DFG::SpeculativeJIT::compile):
     13
    1142014-08-25  Saam Barati  <sbarati@apple.com>
    215
  • trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp

    r172940 r172959  
    47234723        Edge& baseEdge = m_jit.graph().varArgChild(node, 0);
    47244724        Edge& propertyEdge = m_jit.graph().varArgChild(node, 1);
    4725         Edge& indexEdge = m_jit.graph().varArgChild(node, 2);
    4726         Edge& enumeratorEdge = m_jit.graph().varArgChild(node, 3);
    47274725
    47284726        SpeculateCellOperand base(this, baseEdge);
    47294727        SpeculateCellOperand property(this, propertyEdge);
    4730         SpeculateInt32Operand index(this, indexEdge);
    4731         SpeculateCellOperand enumerator(this, enumeratorEdge);
    47324728        GPRResult resultPayload(this);
    47334729        GPRResult2 resultTag(this);
     
    47364732        GPRReg baseGPR = base.gpr();
    47374733        GPRReg propertyGPR = property.gpr();
    4738         GPRReg indexGPR = index.gpr();
    4739         GPRReg enumeratorGPR = enumerator.gpr();
    47404734        GPRReg resultTagGPR = resultTag.gpr();
    47414735        GPRReg resultPayloadGPR = resultPayload.gpr();
    47424736        GPRReg scratchGPR = scratch.gpr();
     4737
     4738#if CPU(X86)
     4739        // Not enough registers on X86 for this code, so always use the slow path.
     4740        flushRegisters();
     4741        m_jit.move(MacroAssembler::TrustedImm32(JSValue::CellTag), scratchGPR);
     4742        callOperation(operationGetByValCell, resultTagGPR, resultPayloadGPR, baseGPR, scratchGPR, propertyGPR);
     4743#else
     4744        Edge& indexEdge = m_jit.graph().varArgChild(node, 2);
     4745        Edge& enumeratorEdge = m_jit.graph().varArgChild(node, 3);
     4746
     4747        SpeculateInt32Operand index(this, indexEdge);
     4748        SpeculateCellOperand enumerator(this, enumeratorEdge);
     4749
     4750        GPRReg indexGPR = index.gpr();
     4751        GPRReg enumeratorGPR = enumerator.gpr();
    47434752
    47444753        // Check the structure
     
    47764785        m_jit.move(MacroAssembler::TrustedImm32(JSValue::CellTag), scratchGPR);
    47774786        addSlowPathGenerator(slowPathCall(wrongStructure, this, operationGetByValCell, resultTagGPR, resultPayloadGPR, baseGPR, scratchGPR, propertyGPR));
     4787#endif
    47784788
    47794789        jsValueResult(resultTagGPR, resultPayloadGPR, node);
Note: See TracChangeset for help on using the changeset viewer.