I have a question regarding V8's compiler optimization, specifically
concerning the modulo 2 operation. In compilers like GCC and Clang, it's
common to see the operation n % 2 optimized to a bitwise AND (n & 1) or a
bit check instruction, as these are generally more efficient.
I've been examining the bytecode generated by V8, and I've observed that a
modulo instruction is used for n % 2.
[generated bytecode for function: my_mod (0x3de244c5b401
<SharedFunctionInfo my_mod>)]
Bytecode length: 17
Parameter count 2
Register count 1
Frame size 8
23 S> 0x32c69b60dc80 @ 0 : 0b 03 Ldar a0
29 E> 0x32c69b60dc82 @ 2 : 4b 02 00 ModSmi [2], [0]
0x32c69b60dc85 @ 5 : c9 Star0
0x32c69b60dc86 @ 6 : 0d 01 LdaSmi [1]
33 E> 0x32c69b60dc88 @ 8 : 6f f9 01 TestEqual r0, [1]
0x32c69b60dc8b @ 11 : 9e 04 JumpIfFalse [4]
(0x32c69b60dc8f @ 15)
45 S> 0x32c69b60dc8d @ 13 : 11 LdaTrue
57 S> 0x32c69b60dc8e @ 14 : ae Return
64 S> 0x32c69b60dc8f @ 15 : 12 LdaFalse
77 S> 0x32c69b60dc90 @ 16 : ae Return
I'm curious if this behavior changes when the code is "heated" and
optimized by Turbofan.
Could someone please tell whether Turbofan performs this particular
optimization?
Thank you for your time and expertise.
--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
---
You received this message because you are subscribed to the Google Groups
"v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion visit
https://groups.google.com/d/msgid/v8-dev/8076ce9c-180b-48fd-957e-17f32f72bbc3n%40googlegroups.com.