DescriptionStraight-line code in DeferredTaggedToI
Code is shorter because the multiple branches to deoptimization are
short form branches to a long form jump.
Also: use 1-byte form of push reg instead of 2 byte form in several
places.
Example: this deferred code is 20% shorter.
0xf4b270bf 1087 8179ffa1a03bf5 cmp [ecx+0xff],0xf53ba0a1 ;; object: 0xf53ba0a1 <Map>
0xf4b270c6 1094 0f85d0300400 jnz 0xf4b6a19c ;; deoptimization bailout 38
0xf4b270cc 1100 f20f104103 movsd xmm0,[ecx+0x3]
0xf4b270d1 1105 f20f2cc8 cvttsd2si ecx,xmm0
0xf4b270d5 1109 f20f2ac9 cvtsi2sd xmm1,ecx
0xf4b270d9 1113 660f2ec1 ucomisd xmm0,xmm1
0xf4b270dd 1117 0f85b9300400 jnz 0xf4b6a19c ;; deoptimization bailout 38
0xf4b270e3 1123 0f8ab3300400 jpe 0xf4b6a19c ;; deoptimization bailout 38
0xf4b270e9 1129 e987feffff jmp 757 (0xf4b26f75)
0xf4b270ee 1134
1134 = 1087 = 47
0xf4b8749c 1052 8179ffa1a041f5 cmp [ecx+0xff],0xf541a0a1 ;; object: 0xf541a0a1 <Map>
0xf4b874a3 1059 7519 jnz 1086 (0xf4b874be)
0xf4b874a5 1061 f20f104103 movsd xmm0,[ecx+0x3]
0xf4b874aa 1066 f20f2cc8 cvttsd2si ecx,xmm0
0xf4b874ae 1070 f20f2ac9 cvtsi2sd xmm1,ecx
0xf4b874b2 1074 660f2ec1 ucomisd xmm0,xmm1
0xf4b874b6 1078 7506 jnz 1086 (0xf4b874be)
0xf4b874b8 1080 0f8bb0feffff jpo 750 (0xf4b8736e)
0xf4b874be 1086 e9d92c0400 jmp 0xf4bca19c ;; deoptimization bailout 38
0xf4b874c3 1091
1091 - 1052 = 39
Patch Set 1 #
Messages
Total messages: 2 (0 generated)
|