[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