Currently, 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.
Created attachment 371572 [details] Patch
<rdar://problem/51472985>
Comment on attachment 371572 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=371572&action=review > Source/JavaScriptCore/dfg/DFGPredictionPropagationPhase.cpp:291 > + changed |= mergePrediction(SpecBytecodeDouble | SpecBigInt); And this also does not propagate "change" :)
Comment on attachment 371572 [details] Patch Nice catch! Informal r+.
Created attachment 371701 [details] Patch
Comment on attachment 371701 [details] Patch r=me
Comment on attachment 371701 [details] Patch Thanks! :)
Comment on attachment 371701 [details] Patch Clearing flags on attachment: 371701 Committed r246237: <https://trac.webkit.org/changeset/246237>
All reviewed patches have been landed. Closing bug.