How to reliably pin a node in CFG?

Vladimir Ivanov vladimir.x.ivanov at oracle.com
Thu Nov 15 07:57:40 PST 2012


Hi,

I'm looking at 8003135 [1] and the problem is that during null check 
(#132) hoisting, the load (#172) is also hoisted [2] [3]. LoadI node is 
constructed in LibraryCallKit::inline_native_isInterrupted
and is pinned to IfTrue projection (#133) of #132, but it doesn't help.

I'm not sure how to avoid the hoisting of the load.

Should the load be pinned to corresponding Region/Loop node instead of 
If node?

Is the logic in PhaseIdealLoop::dominated_by which updates 
control-dependent nodes (:242-:255)is correct?

Best regards,
Vladimir Ivanov

[1] https://jbs.oracle.com/bugs/browse/JDK-8003135
"HotSpot inlines and hoists the Thread.currentThread().isInterrupted() 
out of the loop"

[2] 
http://cr.openjdk.java.net/~vlivanov/8003135/graphs/loop_invariant_hoisting_132_before.png

[3] 
http://cr.openjdk.java.net/~vlivanov/8003135/graphs/loop_invariant_hoisting_132_after.png


More information about the hotspot-compiler-dev mailing list