IncompatibleClassChangeError bug

mandy chung mandy.chung at oracle.com
Wed Jul 18 20:48:49 UTC 2018


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