Missing boxing conversion for boolean

Issue #239 resolved
Jesper Öqvist created an issue

ExtendJ 8.0.1-235-g49efefa Java SE 8

The bytecode generated for this test is not executable:

public class N5 {

  public static void main(String[] args) {
    boolean b = true;
    Boolean boxed = b;
    System.out.println(boxed);
  }
}

Expected result: should print "true"

Actual result: stack map induced verification error:

Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.VerifyError: Bad type on operand stack
Exception Details:
  Location:
    N5.main([Ljava/lang/String;)V @3: astore_2
  Reason:
    Type integer (current frame, stack[0]) is not assignable to reference type
  Current Frame:
    bci: @3
    flags: { }
    locals: { '[Ljava/lang/String;', integer }
    stack: { integer }
  Bytecode:
    0x0000000: 043c 1b4d b200 1c2c b600 22b1

The generated bytecode:

  public static void main(java.lang.String[]) throws ;
    flags: ACC_PUBLIC, ACC_STATIC
    Exceptions:
      throws 
    Code:
      stack=2, locals=3, args_size=1
         0: iconst_1      
         1: istore_1      
         2: iload_1       
         3: astore_2      
         4: getstatic     #28                 // Field java/lang/System.out:Ljava/io/PrintStream;
         7: aload_2       
         8: invokevirtual #34                 // Method java/io/PrintStream.println:(Ljava/lang/Object;)V
        11: return        

Comments (2)

  1. Log in to comment