IncompatibleClassChangeError bug

forax at univ-mlv.fr forax at univ-mlv.fr
Wed Jul 18 20:52:09 UTC 2018


Ok, great,
i see the bug in the code, it inserts the name of the array instead of inserting the component type name.

regards,
Rémi

----- Mail original -----
> De: "mandy chung" <mandy.chung at oracle.com>
> À: "Remi Forax" <forax at univ-mlv.fr>
> Cc: "valhalla-dev" <valhalla-dev at openjdk.java.net>
> Envoyé: Mercredi 18 Juillet 2018 22:48:49
> Objet: Re: IncompatibleClassChangeError bug

> Hi Remi,
> 
> It's a bug in the InnerClassLambdaMetafactory including an array type
> in the ValueTypes attribute.
> 
> I fix it in the fix for JDK-8207790 [1]:
>   http://cr.openjdk.java.net/~mchung/valhalla/webrevs/8207790/webrev.00/
> 
> I verified your test that works.
> 
> Mandy
> [1]
> http://mail.openjdk.java.net/pipermail/valhalla-dev/2018-July/004730.html
> 
> On 7/18/18 1:39 PM, Remi Forax wrote:
>> Hi all,
>> a build from 39a2d3a3b101 breaks my tests with an IncompatibleClassChangeError.
>> I have isolated the issue:
>> 
>> ---
>> import java.util.function.IntFunction;
>> 
>> public class ArrayGeneratorBug {
>> 
>>    static __ByValue class Foo {
>>      private final int x;
>>      
>>      public Foo(int x) {
>>        this.x = x;
>>      }
>>    }
>>    
>>    private static <T> T[] gen(IntFunction<T[]> arrayCreator) {
>>      return arrayCreator.apply(0);
>>    }
>>    
>>    public static void main(String[] args) {
>>      Foo[] array = gen(Foo[]::new);
>>      System.out.println(array);
>>    }
>> }
>> ---
>> 
>> At runtime something goes wrong:
>> 
>> /usr/jdk/jdk-11-lworld/bin/java -XX:+EnableValhalla ArrayGeneratorBug
>> Exception in thread "main" java.lang.IncompatibleClassChangeError: signature
>> (I)[LArrayGeneratorBug$Foo; inconsistent value type:
>> ArrayGeneratorBug$$Lambda$1/0x0000000800060840 ArrayGeneratorBug
>> 	at ArrayGeneratorBug.gen(ArrayGeneratorBug.java:14)
>> 	at ArrayGeneratorBug.main(ArrayGeneratorBug.java:18)
>> 
>> regards,
>> Rémi
>> 



More information about the valhalla-dev mailing list