[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:
http://hg.openjdk.java.net/jdk9/jdk9/hotspot/file/cf67bfa444b1/src/share/vm/opto/memnode.hpp#l154
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