DescriptionPPC: [crankshaft] Address the deoptimization loops of Math.floor, Math.round and Math.ceil.
Port 978ad03b9275fb338f6dd484c1ef732d1a97ccfe
Original commit message:
Fix and re-enable the flexible representation for Math.floor (which is used to
implement Math.ceil) and Math.round, which allows Math.floor and Math.round to
return double results instead of int32, and therefore allows values outside
the int32 range, especially -0 is now a valid result, which doesn't deopt.
Also port this feature to x64 and ia32 when the CPU supports the SSE4.1
extension.
This addresses all the known deoptimization loops related to Math.round
in the Kraken benchmark suite, and seems to also address most of the
deoptimization loops related to Math.floor in the Oort Online benchmark.
Drive-by-fix: Import the regression tests for the broken HMathFloorOfDiv
optimization that caused the initial revert of the feature (for arm64 only
back then).
R=bmeurer@chromium.org, joransiu@ca.ibm.com, jyan@ca.ibm.com, michael_dawson@ca.ibm.com
BUG=chromium:476477, v8:2890, v8:4059
LOG=n
Committed: https://crrev.com/4e93ce4f62ab6766dad17d8a6132f5270c148f86
Cr-Commit-Position: refs/heads/master@{#35659}
Patch Set 1 #Patch Set 2 : Fix DEBUG #
Messages
Total messages: 27 (12 generated)
|