DescriptionRemove forced type changes when they can't deopt
Hydrogen attempts to force representation changes on certain operations in order
to deoptimise on the change rather than the operation. However, these forced
changes are often unnecessary on 64-bit platforms, and cause poor code
generation, so this patch makes some of them conditional on whether it's
possible for deoptimisation to occur in the change.
On ARM64, this prevents sequences like:
;;; <@46,#89> smi-tag
0x7ff282c7f050 144 lsl x4, x4, #32
;;; <@48,#90> smi-untag
0x7ff282c7f054 148 asr x5, x4, #32
;;; <@50,#31> mul-const-i-s
0x7ff282c7f058 152 lsl w6, w5, #3
BUG=
R=jkummerow@chromium.org
Committed: https://code.google.com/p/v8/source/detail?r=21818
Patch Set 1 #Patch Set 2 : Remove ForceRepresentation in representation change phase. #
Total comments: 6
Patch Set 3 : Address Jakob's comments #Messages
Total messages: 9 (0 generated)
|