Changeset 145491 in webkit


Ignore:
Timestamp:
Mar 12, 2013 12:02:51 AM (11 years ago)
Author:
fpizlo@apple.com
Message:

DFG prediction propagation phase should not rerun forward propagation if double voting has already converged
https://bugs.webkit.org/show_bug.cgi?id=111920

Reviewed by Oliver Hunt.

I don't know why we weren't exiting early after double voting if !m_changed.

This change also removes backwards propagation from the voting fixpoint, since at that
point short-circuiting loops is probably not particularly profitable. Profiling shows
that this reduces the time spent in prediction propagation even further.

This change appears to be a 1% SunSpider speed-up.

  • dfg/DFGPredictionPropagationPhase.cpp:

(JSC::DFG::PredictionPropagationPhase::run):

Location:
trunk/Source/JavaScriptCore
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/ChangeLog

    r145489 r145491  
     12013-03-12  Filip Pizlo  <fpizlo@apple.com>
     2
     3        DFG prediction propagation phase should not rerun forward propagation if double voting has already converged
     4        https://bugs.webkit.org/show_bug.cgi?id=111920
     5
     6        Reviewed by Oliver Hunt.
     7       
     8        I don't know why we weren't exiting early after double voting if !m_changed.
     9       
     10        This change also removes backwards propagation from the voting fixpoint, since at that
     11        point short-circuiting loops is probably not particularly profitable. Profiling shows
     12        that this reduces the time spent in prediction propagation even further.
     13       
     14        This change appears to be a 1% SunSpider speed-up.
     15
     16        * dfg/DFGPredictionPropagationPhase.cpp:
     17        (JSC::DFG::PredictionPropagationPhase::run):
     18
    1192013-03-11  Filip Pizlo  <fpizlo@apple.com>
    220
  • trunk/Source/JavaScriptCore/dfg/DFGPredictionPropagationPhase.cpp

    r145489 r145491  
    7474            m_changed = false;
    7575            doRoundOfDoubleVoting();
    76             propagateForward();
    7776            if (!m_changed)
    7877                break;
    79            
    8078            m_changed = false;
    81             doRoundOfDoubleVoting();
    82             propagateBackward();
     79            propagateForward();
    8380        } while (m_changed);
    8481       
Note: See TracChangeset for help on using the changeset viewer.