RFR: several small changes including 8207040: [lworld] TestLWorld fails with "Meet Not Symmetric" with -Xcomp
rwestrel at redhat.com
Fri Jul 13 13:06:18 UTC 2018
This includes the fix for the type system bug 8207040 and a test case
that triggers it. The change mimics what happens with regular instances.
In the process, I found that:
- checkcast buffers values when it's not needed. The change delays
allocation. I actually wonder if the path where we allocate is seen in
practice and if it is if we need to allocate at all.
- the Parse::merge_common sometimes buffers a value when there's no
merge point which is unnecessary so I changed that logic too.
With both changes, ValueTypeNodes are seen in a few places where they
are not expected. This change fixes those. In particular an array store
can see a ValueTypeNode when storing to a non flattened array. The
current code treats it as a flattened store because its decision are
based on the type of the value being stored (ValueTypeNode or not). I
reworked that logic.
I'm a bit confused by monitorenter. We deoptimize when we see a value
but we're already at the monitorenter. So when we deoptimize, given we
don't reexecute the monitorenter, we resume execution after that
bytecode. How does that trigger an exception?
More information about the valhalla-dev