RFR (S): 8003135: HotSpot inlines and hoists the Thread.currentThread().isInterrupted() out of the loop
vladimir.x.ivanov at oracle.com
Thu Dec 13 15:02:40 PST 2012
31 lines changed: 16 ins; 6 del; 9 mod
In the IR produced by Thread.isInterrupted(Z)Z intrinsic it's possible
to hoist the load of _interrupted flag out of the loop. The fix is to
add a barrier to forbid such optimization.
Proposed fix is cleaner that  (no explicit memory state management).
The place for the barrier is deliberately chosen earlier than necessary
and it blocks hoisting of some loop invariants when
Thread.isInterrupted() is called in a loop. But I think it's a fair
price since I don't think that Thread.isInterrupted(Z)Z performance in
tight loops is critical.
If you prefer  let me know.
Also, cleaned up the code around a little.
Testing: failing test, manual (verified generated code), JPRT (in progress)
More information about the hotspot-compiler-dev