Changeset 232890 in webkit


Ignore:
Timestamp:
Jun 15, 2018 12:57:50 PM (6 years ago)
Author:
sbarati@apple.com
Message:

Make ForceOSRExit CFG pruning in bytecode parser more aggressive by making the original block to ignore be the plan's osrEntryBytecodeIndex
https://bugs.webkit.org/show_bug.cgi?id=186648

Reviewed by Michael Saboff.

This patch is neutral on SunSpider/bitops-bitwise-and. That test originally
regressed with my first version of ForceOSRExit CFG pruning. This patch makes
ForceOSRExit CFG pruning more aggressive by not ignoring everything that
can reach any loop_hint, but only ignoring blocks that can reach a loop_hint
if it's the plan's osr entry bytecode target. The goal is to get a speedometer
2 speedup with this change on iOS.

  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::parse):

Location:
trunk/Source/JavaScriptCore
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/ChangeLog

    r232883 r232890  
     12018-06-15  Saam Barati  <sbarati@apple.com>
     2
     3        Make ForceOSRExit CFG pruning in bytecode parser more aggressive by making the original block to ignore be the plan's osrEntryBytecodeIndex
     4        https://bugs.webkit.org/show_bug.cgi?id=186648
     5
     6        Reviewed by Michael Saboff.
     7
     8        This patch is neutral on SunSpider/bitops-bitwise-and. That test originally
     9        regressed with my first version of ForceOSRExit CFG pruning. This patch makes
     10        ForceOSRExit CFG pruning more aggressive by not ignoring everything that
     11        can reach any loop_hint, but only ignoring blocks that can reach a loop_hint
     12        if it's the plan's osr entry bytecode target. The goal is to get a speedometer
     13        2 speedup with this change on iOS.
     14
     15        * dfg/DFGByteCodeParser.cpp:
     16        (JSC::DFG::ByteCodeParser::parse):
     17
    1182018-06-15  Michael Catanzaro  <mcatanzaro@igalia.com>
    219
  • trunk/Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp

    r232742 r232890  
    68406840        BlockSet blocksToIgnore;
    68416841        for (BasicBlock* block : m_graph.blocksInNaturalOrder()) {
    6842             if (block->isOSRTarget)
     6842            if (block->isOSRTarget && block->bytecodeBegin == m_graph.m_plan.osrEntryBytecodeIndex) {
    68436843                blocksToIgnore.add(block);
     6844                break;
     6845            }
    68446846        }
    68456847
Note: See TracChangeset for help on using the changeset viewer.