[1.15] Manually inline PooledBlockPosition#d(int, int, int)#3638
Conversation
cb83bf3 to
1d1c056
Compare
|
Bear with me and my limited understanding as of now, but why would you care about C1 performance? Further, your first screenshot shows C1 @ Level 2 while second screen is C2 compiled code - your VM wasn't warmed up properly. For a better understanding of compiler levels, read this excellent in-code comment: JVM8 - almost identical commment but moved since: JVM15
I didn't notice that description initially, but suspected that. Therefore the
Q.E.D. ∎ But that's C1 only. If I understand it correctly, all of those compiler threshold cmdline settings used to apply to C1 as well, but were deprecated since. These thresholds seem to be hardcoded for C1 production builds (e.g. That's all I wanted to say from my JVM inspection tour. So:
If not, consider reverting the patch:
|
I was working with JITWatch, a tool that allows one to easily analyze JIT behavior and found that C1 wouldn't inline
PooledBlockPosition#d(int, int, int). This is especially noticeable at-XX:MaxInlineDepth=15(the default in JDK 14 and above). Even at the default depth of 9, this method still ranks within the top 100 of methods that the JIT couldn't easily inline.Here's what it looks like before the change:

After the change:
