There's a small inconsistency in the way UseCountedLoopSafepoints/LoopStripMiningIter is treated for G1:
default is +UseCountedLoopSafepoints, LoopStripMiningIter=1000
but with:
java -XX:+UseCountedLoopSafepoint
a message is printed:
When counted loop safepoints are enabled, LoopStripMiningIter must be at least 1 (a safepoint every 1 iteration): setting it to 1
but LoopStripMiningIter is set to 1000
So if you want the pre loop strip mining behaviour of +UseCountedLoopSafepoint, you need to pass -XX:+UseCountedLoopSafepoint -XX:LoopStripMiningIter=1