-
Enhancement
-
Resolution: Unresolved
-
P4
-
25
-
x86
X86 does not have zero register. Except that it does for Hotspot, when compressed oops are enabled and heap base is zero. C2 routinely uses R12 as zero register then. It makes the code considerably more compact.
We can do the same in MacroAssembler. This would target the stores of known zeroes, which are surprisingly frequent in C1, mostly for zeroing out various JavaThread slots, e.g. for exception handling.
(We explored, tangentially, freeing R12 when it is zero, only to see that some C2 match rules use it as zero registers, seeJDK-8221249. I suspect code density is why I saw some weird regressions back then.)
We can do the same in MacroAssembler. This would target the stores of known zeroes, which are surprisingly frequent in C1, mostly for zeroing out various JavaThread slots, e.g. for exception handling.
(We explored, tangentially, freeing R12 when it is zero, only to see that some C2 match rules use it as zero registers, see
- relates to
-
JDK-8221249 x86: make r12_heapbase register available when compressed oops do not require it
-
- Closed
-
- links to
-
Review(master) openjdk/jdk/24519