Ignore:
Timestamp:
Jun 1, 2015, 10:39:11 PM (10 years ago)
Author:
[email protected]
Message:

Any exit from any JIT due to profiling for an inline cache should force all future compilations to be wary
https://bugs.webkit.org/show_bug.cgi?id=145496

Reviewed by Geoffrey Garen.

This pessimizes compilation a bit, but it reduces the likelihood of exiting from FTL. I
couldn't find any convincing reason not to do this, and we know from Speedometer that this
change is necessary for weirder code.

  • bytecode/CallLinkStatus.cpp:

(JSC::CallLinkStatus::computeFor):
(JSC::CallLinkStatus::computeExitSiteData):
(JSC::CallLinkStatus::computeDFGStatuses):

  • bytecode/CallLinkStatus.h:
  • bytecode/GetByIdStatus.cpp:

(JSC::GetByIdStatus::appendVariant):
(JSC::GetByIdStatus::hasExitSite):
(JSC::GetByIdStatus::computeFor):

  • bytecode/GetByIdStatus.h:
  • bytecode/PutByIdStatus.cpp:

(JSC::PutByIdStatus::appendVariant):
(JSC::PutByIdStatus::hasExitSite):
(JSC::PutByIdStatus::computeFor):

  • bytecode/PutByIdStatus.h:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/bytecode/CallLinkStatus.cpp

    r185099 r185103  
    102102
    103103CallLinkStatus::ExitSiteData CallLinkStatus::computeExitSiteData(
    104     const ConcurrentJITLocker& locker, CodeBlock* profiledBlock, unsigned bytecodeIndex,
    105     ExitingJITType exitingJITType)
     104    const ConcurrentJITLocker& locker, CodeBlock* profiledBlock, unsigned bytecodeIndex)
    106105{
    107106    ExitSiteData exitSiteData;
     
    109108#if ENABLE(DFG_JIT)
    110109    exitSiteData.m_takesSlowPath =
    111         profiledBlock->hasExitSite(locker, DFG::FrequentExitSite(bytecodeIndex, BadType, exitingJITType))
    112         || profiledBlock->hasExitSite(locker, DFG::FrequentExitSite(bytecodeIndex, BadExecutable, exitingJITType));
     110        profiledBlock->hasExitSite(locker, DFG::FrequentExitSite(bytecodeIndex, BadType))
     111        || profiledBlock->hasExitSite(locker, DFG::FrequentExitSite(bytecodeIndex, BadExecutable));
    113112    exitSiteData.m_badFunction =
    114         profiledBlock->hasExitSite(locker, DFG::FrequentExitSite(bytecodeIndex, BadCell, exitingJITType));
     113        profiledBlock->hasExitSite(locker, DFG::FrequentExitSite(bytecodeIndex, BadCell));
    115114#else
    116115    UNUSED_PARAM(locker);
     
    266265            ConcurrentJITLocker locker(currentBaseline->m_lock);
    267266            exitSiteData = computeExitSiteData(
    268                 locker, currentBaseline, codeOrigin.bytecodeIndex, ExitFromFTL);
     267                locker, currentBaseline, codeOrigin.bytecodeIndex);
    269268        }
    270269       
Note: See TracChangeset for help on using the changeset viewer.