RFR(M): 8206141: [lworld] Improve accessing a flattened value type array passed as Object[]

Roland Westrelin rwestrel at redhat.com
Thu Sep 27 09:35:19 UTC 2018

Here is a new webrev for this:


that should address the comments from your review and some comments you
made offline.

The failure you reported happens because an array store is emitted with
a test for a flattened array and an ArrayCopyNode but after some
optimizations the type of the array becomes known and the code in
ArrayCopyNode::Ideal() sees a clone from an instance to an array which
is unexpected. I added a test case for that and fixed it by bailing out
of ArrayCopyNode::Ideal() when a mix of array and instance is seen.

I moved the check for a null value from array_store_check() to
array_store() as you mentioned offline that this would require less
runtime checks to be executed in some cases.

I also noticed that if we know the type of the value being stored and
that value cannot be a value type then we're guaranteed the store is to
a non value array. I changed the logic that emits the runtime check


More information about the valhalla-dev mailing list