RFR(S): 8252696: Loop unswitching may cause out of bound array load to be executed

Roland Westrelin rwestrel at redhat.com
Mon Sep 7 07:31:07 UTC 2020


> No this line should be fine. Just to be sure we are talking about the 
> same line, I was referring to L302 in your patch (old_new.map(..)). I 
> used the old_new mapping here to get a quick reference from the cloned 
> node in the slow loop (when processing the slow loop after the fast 
> loop) back to the original node in the fast loop on line L280. But I 
> added additional asserts there to ensure that everything is reset as 
> intended. So, it's fine that you removed the assertion code on L257-267.

I see. So would that logic break if the slow loop is processed first?

Aren't the tests:

slow_node != NULL && slow_node->_idx > idx_before_clone

redundant?

wouldn't:
slow_node->_idx > idx_before_clone

or

fast_node->_idx <= idx_before_clone

be sufficient to figure out whether a node is part of the slow or fast
loop?

Roland.



More information about the hotspot-compiler-dev mailing list