Fwd: java.lang.VerifyError: Bad type on operand stack

Sven Reimers sven.reimers at gmail.com
Tue Jan 6 16:27:26 UTC 2015


@Maurizio: sorry forgot the mailing list...


---------- Forwarded message ----------
From: Sven Reimers <sven.reimers at gmail.com>
Date: Tue, Jan 6, 2015 at 5:20 PM
Subject: Re: java.lang.VerifyError: Bad type on operand stack
To: Maurizio Cimadamore <maurizio.cimadamore at oracle.com>


Follow-Up:

I tried a few different things and got into this:

Point3D<Integer> integerPoint = new Point3D<>(1,2,3);

compiles only if

public static class Point3D<T> {... }

not for

public static class Point3D<any T> {... }

ErrorMessage from the compiler is:

incompatible types: cannot infer type arguments for Point3D<>
      Point3D<Integer> integerPoint = new Point3D<>(1,2,3);
                                                 ^
    reason: cannot infer type-variable(s) T
      (argument mismatch; int cannot be converted to Integer)
  where T is a type-variable:
    T extends <any> declared in class Point3D

Is this intentional (not sure I found this stated in the draft)?

Thanks

Sven


On Tue, Jan 6, 2015 at 4:10 PM, Maurizio Cimadamore <
maurizio.cimadamore at oracle.com> wrote:

> Whoops :-)
>
> Thanks for the report
>
> Maurizio
>
>
> On 06/01/15 15:13, Sven Reimers wrote:
>
>> Hi,
>>
>> as suggested by Brian I tried to get some sample code written and running
>> on top of valhalla.
>>
>> First problem I encountered was that a missing diamond <> on the right
>> hand
>> side (my bad - seems I am really relying on my IDE) was just a warning
>> that
>> I was using a raw type.
>>
>> Running my example I got this:
>>
>> Specializing Valhalla$Point3D${0=I}; searching for Valhalla$Point3D.class
>> (not found)
>> Specializing Valhalla$Point3D${0=I}; searching for Valhalla$Point3D.class
>> (found)
>> 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:
>>      Valhalla.main([Ljava/lang/String;)V @36: invokevirtual
>>    Reason:
>>      Type 'Valhalla$Point3D' (current frame, stack[2]) is not assignable
>> to
>> 'Valhalla$Point3D${0=I}'
>>    Current Frame:
>>      bci: @36
>>      flags: { }
>>      locals: { '[Ljava/lang/String;', 'Valhalla$Point3D' }
>>      stack: { 'java/io/PrintStream', 'java/lang/StringBuilder',
>> 'Valhalla$Point3D' }
>>    Bytecode:
>>      0000000: bb00 0259 04b8 0003 05b8 0003 06b8 0003
>>      0000010: b700 044c b200 05bb 0006 59b7 0007 1208
>>      0000020: b600 092b b600 0ab6 000b b600 0cb6 000d
>>      0000030: b1
>>
>> at java.lang.Class.getDeclaredMethods0(Native Method)
>> at java.lang.Class.privateGetDeclaredMethods(Class.java:2704)
>> at java.lang.Class.privateGetMethodRecursive(Class.java:3049)
>> at java.lang.Class.getMethod0(Class.java:3019)
>> at java.lang.Class.getMethod(Class.java:1787)
>> at sun.launcher.LauncherHelper.validateMainClass(LauncherHelper.java:568)
>> at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:535)
>>
>> Example Code (see the missing <> just after Point3D...):
>>
>> public class Valhalla {
>>
>>
>>     public static void main (String[] args) {
>>
>>        Point3D<int> intPoint = new Point3D(1,2,3);
>>
>>        System.out.println("X: " + intPoint.getX());
>>
>>     }
>>
>>     public static class Point3D<any T> {
>>   private T x;
>> private T y;
>>          private T z;
>>
>>          public Point3D(T x, T y, T z) {
>> this.x = x;
>>                  this.y = y;
>>                  this.z = z;
>> }
>>
>>          public T getX() {
>>     return x;
>> }
>>
>>          public T getY() {
>>     return y;
>> }
>>
>>          public T getZ() {
>>     return z;
>> }
>>
>>     }
>>
>> }
>>
>> Hope to provide more feedback once I got more code running.
>>
>> Thanks for the impressive work so far.
>>
>> -Sven
>>
>>
>


-- 
Sven Reimers

* Senior Expert Software Architect
* NetBeans Dream Team Member: http://dreamteam.netbeans.org
* Community Leader  NetBeans: http://community.java.net/netbeans
                              Desktop Java:
http://community.java.net/javadesktop
* JUG Leader JUG Bodensee: http://www.jug-bodensee.de
* Duke's Choice Award Winner 2009
* Blog: https://www.java.net//blog/sven

* XING: https://www.xing.com/profile/Sven_Reimers8
* LinkedIn: http://www.linkedin.com/in/svenreimers

Join the NetBeans Groups:
* XING: http://www.xing.com/group-20148.82db20
* NUGM: http://haug-server.dyndns.org/display/NUGM/Home
* LinkedIn: http://www.linkedin.com/groups?gid=1860468
                   http://www.linkedin.com/groups?gid=107402
                   http://www.linkedin.com/groups?gid=1684717
* Oracle: https://mix.oracle.com/groups/18497



-- 
Sven Reimers

* Senior Expert Software Architect
* NetBeans Dream Team Member: http://dreamteam.netbeans.org
* Community Leader  NetBeans: http://community.java.net/netbeans
                              Desktop Java:
http://community.java.net/javadesktop
* JUG Leader JUG Bodensee: http://www.jug-bodensee.de
* Duke's Choice Award Winner 2009
* Blog: https://www.java.net//blog/sven

* XING: https://www.xing.com/profile/Sven_Reimers8
* LinkedIn: http://www.linkedin.com/in/svenreimers

Join the NetBeans Groups:
* XING: http://www.xing.com/group-20148.82db20
* NUGM: http://haug-server.dyndns.org/display/NUGM/Home
* LinkedIn: http://www.linkedin.com/groups?gid=1860468
                   http://www.linkedin.com/groups?gid=107402
                   http://www.linkedin.com/groups?gid=1684717
* Oracle: https://mix.oracle.com/groups/18497


More information about the valhalla-dev mailing list