RFR S 8214742 [lworld][c1] Block merging need to preserve type info for flattened arrays

Ioi Lam ioi.lam at oracle.com
Wed Dec 5 17:50:34 UTC 2018


Hi Tobias,

Thanks for the review. I've incorporated your suggestions and pushed.

- Ioi


On 12/4/18 2:07 AM, Tobias Hartmann wrote:
> Hi Ioi,
>
> I would prefer to make this more generic (later we might want to propagate type information for
> other bytecodes as well, not only for arrays). So the comment for Phi::_exact_type should be more
> general and ValueStack::merge_if_flattened_array_types should be renamed to ValueStack::merge_types
> or something. I think that method can also be simplified to:
>
> if (new_value->is_flattened_array() &&
>      (existing_value == NULL || existing_value->is_flattened_array())) {
>    assert(existing_value == NULL || existing_value->exact_type() == new_value->exact_type(), "must be
> guaranteed by verifier");
>    return new_value->exact_type();
> }
> return NULL;
>
> and a comment can be added stating that we currently only merge types of flattened arrays.
>
> Thanks,
> Tobias
>
> On 04.12.18 00:51, Ioi Lam wrote:
>> https://bugs.openjdk.java.net/browse/JDK-8214742
>> http://cr.openjdk.java.net/~iklam/valhalla/8214742-preserve-typeinfo-for-flattened-array.v01/
>>
>> The fix is for code like this, where the aaload bytecode needs to know that the array is flattened.
>>
>>      static int test(boolean b) {
>>          VT[] va;
>>          if (b) {
>>              va = new VT[5];
>>          } else {
>>              va = new VT[10];
>>          }
>>          return va[0].v1;  <<<< here
>>      }
>>
>> Thanks
>>
>> - Ioi
>>



More information about the valhalla-dev mailing list