c1 crashes ?

forax at univ-mlv.fr forax at univ-mlv.fr
Tue Jun 26 13:21:17 UTC 2018


----- Mail original -----
> De: "Tobias Hartmann" <tobias.hartmann at oracle.com>
> À: "Remi Forax" <forax at univ-mlv.fr>, "Roland Westrelin" <rwestrel at redhat.com>
> Cc: "valhalla-dev" <valhalla-dev at openjdk.java.net>
> Envoyé: Mardi 26 Juin 2018 14:42:51
> Objet: Re: c1 crashes ?

> Hi Remi,
> 
> so this is a C1 crash with an application that uses value types and is executed
> without
> -XX:+EnableValhalla, right? A crash is expected in this case because C1 does not
> support value types
> (and Tiered Compilation is enabled by default). Maybe we should reject value
> types during
> verification if EnableValhalla is off.

yes and explain that value type can be enable using -XX:+EnableValhalla ?

> 
> Thanks,
> Tobias

Rémi

> 
> 
> On 25.06.2018 11:29, forax at univ-mlv.fr wrote:
>> 
>> 
>> ----- Mail original -----
>>> De: "Roland Westrelin" <rwestrel at redhat.com>
>>> À: "Remi Forax" <forax at univ-mlv.fr>
>>> Cc: "valhalla-dev" <valhalla-dev at openjdk.java.net>
>>> Envoyé: Lundi 25 Juin 2018 11:13:06
>>> Objet: Re: c1 crashes ?
>> 
>>>> it seems to work without (apart c1 crash).
>>>
>>> Do you have a test case for the c1 crash?
>> 
>> yes, sure, see below.
>> 
>>>
>>> Roland.
>> 
>> Rémi
>> 
>> ---
>> public final __ByValue class IntBox {
>>   private final int value;
>> 
>>   private IntBox() {
>>     this.value = 0;
>>   }
>> 
>>   @Override
>>   public String toString() {
>>     return "" + value;
>>   }
>> 
>>   public int compareTo(IntBox box) {
>>     return Integer.compare(value, box.value);
>>   }
>>   
>>   public IntBox add(IntBox box) {
>>     return IntBox.valueOf(value + box.value);
>>   }
>>   
>>   public static IntBox valueOf(int value) {
>>     IntBox box = __MakeDefault IntBox();
>>     box = __WithField(box.value, value);
>>     return box;
>>   }
>> 
>>   private static IntBox sum(IntBox n) {
>>     IntBox sum = IntBox.valueOf(0);
>>     for(IntBox i = IntBox.valueOf(0); i.compareTo(n) < 0; i =
>>     i.add(IntBox.valueOf(1))) {
>>       sum = sum.add(i);
>>     }
>>     return sum;
>>   }
>>   
>>   public static void main(String[] args) {
>>     for(int i = 0; i < 100_000; i++) {
>>       sum(IntBox.valueOf(i));
>>     }
>>   }
>> }



More information about the valhalla-dev mailing list