IncompatibleClassChangeError bug

Remi Forax forax at univ-mlv.fr
Wed Jul 18 20:45:47 UTC 2018


If i read the error message correctly, it means that the lambda proxy is considered as a value type, which is quite cool be unexpected :)

Rémi

----- Mail original -----
> De: "Remi Forax" <forax at univ-mlv.fr>
> À: "valhalla-dev" <valhalla-dev at openjdk.java.net>
> Envoyé: Mercredi 18 Juillet 2018 22:39:37
> Objet: IncompatibleClassChangeError bug

> 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