⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 246237 in webkit


Ignore:
Timestamp:
Jun 9, 2019, 12:09:48 AM (7 years ago)
Author:
ysuzuki@apple.com
Message:

[JSC] Use mergePrediction in ValuePow prediction propagation
https://bugs.webkit.org/show_bug.cgi?id=198648

Reviewed by Saam Barati.

JSTests:

  • stress/prediction-propagation-should-use-merge-prediction-for-value-pow.js: Added.

Source/JavaScriptCore:

We are accidentally using setPrediction. This is wrong since prediction propagation (not processInvariant)
must extend the speculation types to ensure we eventually reach to the fixed point. setPrediction can discard
previously configured predictions, can lead to oscillation potentially. Use mergePrediction instead.

  • dfg/DFGPredictionPropagationPhase.cpp:
Location:
trunk
Files:
1 added
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/JSTests/ChangeLog

    r246210 r246237  
     12019-06-09  Yusuke Suzuki  <ysuzuki@apple.com>
     2
     3        [JSC] Use mergePrediction in ValuePow prediction propagation
     4        https://bugs.webkit.org/show_bug.cgi?id=198648
     5
     6        Reviewed by Saam Barati.
     7
     8        * stress/prediction-propagation-should-use-merge-prediction-for-value-pow.js: Added.
     9
    1102019-06-07  Tadeu Zagallo  <tzagallo@apple.com>
    211
  • trunk/Source/JavaScriptCore/ChangeLog

    r246210 r246237  
     12019-06-09  Yusuke Suzuki  <ysuzuki@apple.com>
     2
     3        [JSC] Use mergePrediction in ValuePow prediction propagation
     4        https://bugs.webkit.org/show_bug.cgi?id=198648
     5
     6        Reviewed by Saam Barati.
     7
     8        We are accidentally using setPrediction. This is wrong since prediction propagation (not processInvariant)
     9        must extend the speculation types to ensure we eventually reach to the fixed point. setPrediction can discard
     10        previously configured predictions, can lead to oscillation potentially. Use mergePrediction instead.
     11
     12        * dfg/DFGPredictionPropagationPhase.cpp:
     13
    1142019-06-07  Tadeu Zagallo  <tzagallo@apple.com>
    215
  • trunk/Source/JavaScriptCore/dfg/DFGPredictionPropagationPhase.cpp

    r246041 r246237  
    287287                else if (isFullNumberOrBooleanSpeculationExpectingDefined(left)
    288288                    && isFullNumberOrBooleanSpeculationExpectingDefined(right))
    289                     setPrediction(SpecBytecodeDouble);
     289                    changed |= mergePrediction(SpecBytecodeDouble);
    290290                else
    291                     setPrediction(SpecBytecodeDouble | SpecBigInt);
     291                    changed |= mergePrediction(SpecBytecodeDouble | SpecBigInt);
    292292            }
    293293            break;
Note: See TracChangeset for help on using the changeset viewer.