[9] RFR (S): 8152773: C2: LoadNode properties aren't preserved when converting between signed/unsigned variants

John Rose john.r.rose at oracle.com
Fri Mar 25 17:57:21 UTC 2016

That looks right.

1. Look for other mentions of _depends_on_test:  I saw one in the comments above you maybe missed.

(The interaction of DependsOnlyOnTest with the node hash is tricky, interaction with Pinned needs evaluation IMO.)

2. This is a good moment to convert MemNode::_unaligned_access and _mismatched_access to enums,
for the same reasons listed here:

I think they are separate booleans for the usual reason:  They were introduced at different times.

— John

On Mar 25, 2016, at 10:38 AM, Vladimir Ivanov <vladimir.x.ivanov at oracle.com> wrote:
> http://cr.openjdk.java.net/~vlivanov/8152773/webrev.00/
> https://bugs.openjdk.java.net/browse/JDK-8152773
> AndINode::Ideal() converts signed loads to unsigned for some masks. But it constructs fresh nodes and doesn't copy LoadNode properties from the node being replaced. It means that operations marked as pinned, mismatched or unaligned will not be treated as such anymore.
> The problem was found by compiler/unsafe/UnsafeGetStableArrayElement.
> Testing: failing test, JPRT (in progress), RBT (in progress).
> Best regards,
> Vladimir Ivanov

More information about the hotspot-compiler-dev mailing list