[8u20, 9] RFR(S): 8011646 : SEGV in compiled code with loop predication

Vladimir Kozlov vladimir.kozlov at oracle.com
Thu May 29 01:29:36 UTC 2014


On 5/28/14 4:42 PM, John Rose wrote:
> On May 28, 2014, at 2:53 PM, Albert <albert.noll at oracle.com
> <mailto:albert.noll at oracle.com>> wrote:
>
>>> It is only 'Node *' to 'Node* ' change. 'udiffs' show that cleanly.
>>>
>> Yes, I just put the '*' uniformly to the left side.
>
> (Which is fine BTW, since the majority usage is "T* x" not "T *x";
> https://wiki.openjdk.java.net/display/HotSpot/StyleGuide points out we
> do such adjustments.)
>
> Are there any other places where C2 uses normal IR to access the mark
> word of an object, and if so, is a similar bug fix needed there?  If so,
> the tricky logic for building the free-standing LoadXNode needs to be
> factored into a subroutine.

There are several places in macro.cpp in expand_lock_node() and 
expand_unlock_node() which takes control. Note, LockNode is call node 
and always has control. I thought about this part yesterday but said 
nothing because we did not have any problems with that code before. And 
we need more testing if we remove these control edges.

Originally these loads were RAW memory operations and required to have 
control to prevent skipping safepoints.

Vladimir

>
> — John


More information about the hotspot-compiler-dev mailing list