Ignore:
Timestamp:
Mar 30, 2014, 11:43:41 AM (11 years ago)
Author:
[email protected]
Message:

Land the stackmap register liveness glue with the uses of the liveness disabled
https://bugs.webkit.org/show_bug.cgi?id=130924

Source/JavaScriptCore:

Reviewed by Oliver Hunt.

Add the liveness and fix other bugs I found.

  • bytecode/PutByIdStatus.cpp:

(JSC::PutByIdStatus::computeFor):

  • ftl/FTLCompile.cpp:

(JSC::FTL::usedRegistersFor):
(JSC::FTL::fixFunctionBasedOnStackMaps):

  • ftl/FTLSlowPathCall.cpp:
  • ftl/FTLSlowPathCallKey.cpp:

(JSC::FTL::SlowPathCallKey::dump):

  • ftl/FTLSlowPathCallKey.h:

(JSC::FTL::SlowPathCallKey::SlowPathCallKey):
(JSC::FTL::SlowPathCallKey::argumentRegisters):
(JSC::FTL::SlowPathCallKey::withCallTarget):

  • ftl/FTLStackMaps.cpp:

(JSC::FTL::StackMaps::Record::locationSet):
(JSC::FTL::StackMaps::Record::liveOutsSet):
(JSC::FTL::StackMaps::Record::usedRegisterSet):

  • ftl/FTLStackMaps.h:
  • ftl/FTLThunks.cpp:

(JSC::FTL::registerClobberCheck):
(JSC::FTL::slowPathCallThunkGenerator):

  • jit/RegisterSet.cpp:

(JSC::RegisterSet::stackRegisters):
(JSC::RegisterSet::reservedHardwareRegisters):
(JSC::RegisterSet::runtimeRegisters):
(JSC::RegisterSet::specialRegisters):
(JSC::RegisterSet::dump):

  • jit/RegisterSet.h:

(JSC::RegisterSet::RegisterSet):
(JSC::RegisterSet::setAny):
(JSC::RegisterSet::setMany):

  • jit/Repatch.cpp:

(JSC::tryCacheGetByID):
(JSC::tryCachePutByID):
(JSC::tryRepatchIn):

  • runtime/Options.cpp:

(JSC::recomputeDependentOptions):

  • runtime/Options.h:

Tools:

Reviewed by Oliver Hunt.

  • Scripts/run-jsc-stress-tests:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/ftl/FTLSlowPathCall.cpp

    r165293 r166463  
    6868       
    6969        for (unsigned i = std::min(NUMBER_OF_ARGUMENT_REGISTERS, numArgs); i--;)
    70             m_callingConventionRegisters.set(GPRInfo::toArgumentRegister(i));
     70            m_argumentRegisters.set(GPRInfo::toArgumentRegister(i));
     71        m_callingConventionRegisters.merge(m_argumentRegisters);
    7172        if (returnRegister != InvalidGPRReg)
    7273            m_callingConventionRegisters.set(GPRInfo::returnValueGPR);
     
    8586            (m_usedRegisters.numberOfSetRegisters() - numberOfCallingConventionRegisters) * wordSize;
    8687       
    87         size_t stackAlignment = 16;
    88        
    89         m_stackBytesNeeded = (m_stackBytesNeeded + stackAlignment - 1) & ~(stackAlignment - 1);
     88        m_stackBytesNeeded = (m_stackBytesNeeded + stackAlignmentBytes() - 1) & ~(stackAlignmentBytes() - 1);
    9089       
    9190        m_jit.subPtr(CCallHelpers::TrustedImm32(m_stackBytesNeeded), CCallHelpers::stackPointerRegister);
     
    134133    SlowPathCallKey keyWithTarget(void* callTarget) const
    135134    {
    136         return SlowPathCallKey(usedRegisters(), callTarget, offset());
     135        return SlowPathCallKey(usedRegisters(), callTarget, m_argumentRegisters, offset());
    137136    }
    138137   
     
    150149    State& m_state;
    151150    RegisterSet m_usedRegisters;
     151    RegisterSet m_argumentRegisters;
    152152    RegisterSet m_callingConventionRegisters;
    153153    CCallHelpers& m_jit;
Note: See TracChangeset for help on using the changeset viewer.