Ignore:
Timestamp:
Dec 20, 2012, 11:14:39 AM (12 years ago)
Author:
[email protected]
Message:

DFG speculation checks that take JumpList should consolidate OSRExits
https://bugs.webkit.org/show_bug.cgi?id=105401

Reviewed by Oliver Hunt.

Source/JavaScriptCore:

Change OSRExitCompilationInfo to always contain a JumpList, and change JumpList
to be more compact. This way, a speculationCheck that takes a JumpList only has
to emit one OSRExit structure, and one OSRExit landing pad.

The downside is that we get less precise information about *where* we exited
from. So, this also includes changes to the profiler to be more relaxed about
what an ExitSite is.

  • assembler/AbstractMacroAssembler.h:

(JumpList):

  • dfg/DFGJITCompiler.cpp:

(JSC::DFG::JITCompiler::linkOSRExits):
(JSC::DFG::JITCompiler::link):

  • dfg/DFGJITCompiler.h:

(DFG):
(JSC::DFG::JITCompiler::appendExitInfo):
(JITCompiler):

  • dfg/DFGOSRExitCompilationInfo.h:

(OSRExitCompilationInfo):

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::speculationCheck):
(JSC::DFG::SpeculativeJIT::speculationWatchpoint):
(JSC::DFG::SpeculativeJIT::forwardSpeculationCheck):

  • profiler/ProfilerCompilation.cpp:

(JSC::Profiler::Compilation::addOSRExitSite):

  • profiler/ProfilerCompilation.h:

(Compilation):

  • profiler/ProfilerOSRExitSite.cpp:

(JSC::Profiler::OSRExitSite::toJS):

  • profiler/ProfilerOSRExitSite.h:

(JSC::Profiler::OSRExitSite::OSRExitSite):
(JSC::Profiler::OSRExitSite::codeAddress):
(OSRExitSite):

Tools:

Update the profiler to understand that an OSR exit may have multiple
candidate exit sites.

  • Scripts/display-profiler-output:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/profiler/ProfilerCompilation.cpp

    r137379 r138276  
    7575}
    7676
    77 void Compilation::addOSRExitSite(const void* codeAddress)
     77void Compilation::addOSRExitSite(const Vector<const void*>& codeAddresses)
    7878{
    79     m_osrExitSites.append(OSRExitSite(codeAddress));
     79    m_osrExitSites.append(OSRExitSite(codeAddresses));
    8080}
    8181
Note: See TracChangeset for help on using the changeset viewer.