You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@harmony.apache.org by Alexei Fedotov <al...@gmail.com> on 2007/03/16 13:58:04 UTC
[verifier] question about RI behavior
Mikhail, folks,
Let me attract a collective Harmony brain to the problem. Does anyone
have any idea why the following code doesn't pass verification on RI?
Thanks, Alexei
.class public SubSub
.super java/lang/Object
.method public <init>()V
aload_0
invokespecial java/lang/Object/<init>()V
return
.end method
;
; Subroutine is called from the other subroutine and
; from the top level code.
;
.method public static main([Ljava/lang/String;)V
.limit stack 1
.limit locals 2
jsr LabelSub
jsr LabelSubSub
return
LabelSub:
astore 1
jsr LabelSubSub
ret 1
LabelSubSub:
astore 0
ret 0
.end method
$ java -jar c:/bin/jasmin-1.1/jasmin.jar SubSub.jj
Generated: SubSub.class
$ java -cp . SubSub
java.lang.VerifyError: (class: SubSub, method: testSubSub signature:
()V) Illegal return from subroutine
$
--
With best regards,
Alexei,
ESSD, Intel
Re: [verifier] question about RI behavior
Posted by Alexei Fedotov <al...@gmail.com>.
Hello,
Mikhail, Egor, Pavel,
Thank you for sharing your opinions. This really helps to keep things
in order. BTW, I never tried to use J9 as RI for a verifier, and this
is a good idea indeed.
With best wishes, Alexei
On 3/19/07, Pavel Ozhdikhin <pa...@gmail.com> wrote:
> On 3/19/07, Mikhail Loenko <ml...@gmail.com> wrote:
> >
> > I tried it.
> >
> > JRockit prints the same error as RI, but J9 digests it fine.
> > Harmony JIT fires an assertion.
> >
> > Hi JIT folks, would you share your vision whether this class correct or
> > not?
>
>
>
> To my best knowledge the test does not violate the VM spec.
>
> It looks like we have a bug in Jitrino.JET which fails to compile this test.
> Jitrino.OPT and interpreter successfully pass it.
>
> If RI has a bug in their verifier then the DRLVM is "allowed" to have this
> bug in the verifier as well. :) However, if we use '-noverify' option RI
> passes the test, so we still need to fix Jitrino.JET to avoid the crash.
>
> Thank you,
> Pavel
>
>
> Thanks,
> > Mikhail
> >
> > 2007/3/19, Mikhail Loenko <ml...@gmail.com>:
> > > 16 Mar 2007 16:05:18 +0300, Egor Pasko <eg...@gmail.com>:
> > > > On the 0x29B day of Apache Harmony Alexei Fedotov wrote:
> > > > > Mikhail, folks,
> > > > > Let me attract a collective Harmony brain to the problem. Does
> > anyone
> > > > > have any idea why the following code doesn't pass verification on
> > RI?
> > > >
> > > > looks like a bug :)
> > >
> > > Agreed
> > >
> > > BTW, how other VMs behave? JRockit, J9?
> > >
> > > Thanks,
> > > Mikhail
> > >
> > > >
> > > > > Thanks, Alexei
> > > > >
> > > > > .class public SubSub
> > > > > .super java/lang/Object
> > > > > .method public <init>()V
> > > > > aload_0
> > > > > invokespecial java/lang/Object/<init>()V
> > > > > return
> > > > > .end method
> > > > >
> > > > > ;
> > > > > ; Subroutine is called from the other subroutine and
> > > > > ; from the top level code.
> > > > > ;
> > > > > .method public static main([Ljava/lang/String;)V
> > > > > .limit stack 1
> > > > > .limit locals 2
> > > > >
> > > > > jsr LabelSub
> > > > > jsr LabelSubSub
> > > > > return
> > > > > LabelSub:
> > > > > astore 1
> > > > > jsr LabelSubSub
> > > > > ret 1
> > > > > LabelSubSub:
> > > > > astore 0
> > > > > ret 0
> > > > > .end method
> > > > >
> > > > >
> > > > > $ java -jar c:/bin/jasmin-1.1/jasmin.jar SubSub.jj
> > > > > Generated: SubSub.class
> > > > > $ java -cp . SubSub
> > > > > java.lang.VerifyError: (class: SubSub, method: testSubSub signature:
> > > > > ()V) Illegal return from subroutine
> > > > > $
> > > > >
> > > > >
> > > > > --
> > > > > With best regards,
> > > > > Alexei,
> > > > > ESSD, Intel
> > > > >
> > > >
> > > > --
> > > > Egor Pasko
> > > >
> > > >
> > >
> >
>
--
With best regards,
Alexei,
ESSD, Intel
Re: [verifier] question about RI behavior
Posted by Pavel Ozhdikhin <pa...@gmail.com>.
On 3/19/07, Mikhail Loenko <ml...@gmail.com> wrote:
>
> I tried it.
>
> JRockit prints the same error as RI, but J9 digests it fine.
> Harmony JIT fires an assertion.
>
> Hi JIT folks, would you share your vision whether this class correct or
> not?
To my best knowledge the test does not violate the VM spec.
It looks like we have a bug in Jitrino.JET which fails to compile this test.
Jitrino.OPT and interpreter successfully pass it.
If RI has a bug in their verifier then the DRLVM is "allowed" to have this
bug in the verifier as well. :) However, if we use '-noverify' option RI
passes the test, so we still need to fix Jitrino.JET to avoid the crash.
Thank you,
Pavel
Thanks,
> Mikhail
>
> 2007/3/19, Mikhail Loenko <ml...@gmail.com>:
> > 16 Mar 2007 16:05:18 +0300, Egor Pasko <eg...@gmail.com>:
> > > On the 0x29B day of Apache Harmony Alexei Fedotov wrote:
> > > > Mikhail, folks,
> > > > Let me attract a collective Harmony brain to the problem. Does
> anyone
> > > > have any idea why the following code doesn't pass verification on
> RI?
> > >
> > > looks like a bug :)
> >
> > Agreed
> >
> > BTW, how other VMs behave? JRockit, J9?
> >
> > Thanks,
> > Mikhail
> >
> > >
> > > > Thanks, Alexei
> > > >
> > > > .class public SubSub
> > > > .super java/lang/Object
> > > > .method public <init>()V
> > > > aload_0
> > > > invokespecial java/lang/Object/<init>()V
> > > > return
> > > > .end method
> > > >
> > > > ;
> > > > ; Subroutine is called from the other subroutine and
> > > > ; from the top level code.
> > > > ;
> > > > .method public static main([Ljava/lang/String;)V
> > > > .limit stack 1
> > > > .limit locals 2
> > > >
> > > > jsr LabelSub
> > > > jsr LabelSubSub
> > > > return
> > > > LabelSub:
> > > > astore 1
> > > > jsr LabelSubSub
> > > > ret 1
> > > > LabelSubSub:
> > > > astore 0
> > > > ret 0
> > > > .end method
> > > >
> > > >
> > > > $ java -jar c:/bin/jasmin-1.1/jasmin.jar SubSub.jj
> > > > Generated: SubSub.class
> > > > $ java -cp . SubSub
> > > > java.lang.VerifyError: (class: SubSub, method: testSubSub signature:
> > > > ()V) Illegal return from subroutine
> > > > $
> > > >
> > > >
> > > > --
> > > > With best regards,
> > > > Alexei,
> > > > ESSD, Intel
> > > >
> > >
> > > --
> > > Egor Pasko
> > >
> > >
> >
>
Re: [verifier] question about RI behavior
Posted by Mikhail Loenko <ml...@gmail.com>.
I tried it.
JRockit prints the same error as RI, but J9 digests it fine.
Harmony JIT fires an assertion.
Hi JIT folks, would you share your vision whether this class correct or not?
Thanks,
Mikhail
2007/3/19, Mikhail Loenko <ml...@gmail.com>:
> 16 Mar 2007 16:05:18 +0300, Egor Pasko <eg...@gmail.com>:
> > On the 0x29B day of Apache Harmony Alexei Fedotov wrote:
> > > Mikhail, folks,
> > > Let me attract a collective Harmony brain to the problem. Does anyone
> > > have any idea why the following code doesn't pass verification on RI?
> >
> > looks like a bug :)
>
> Agreed
>
> BTW, how other VMs behave? JRockit, J9?
>
> Thanks,
> Mikhail
>
> >
> > > Thanks, Alexei
> > >
> > > .class public SubSub
> > > .super java/lang/Object
> > > .method public <init>()V
> > > aload_0
> > > invokespecial java/lang/Object/<init>()V
> > > return
> > > .end method
> > >
> > > ;
> > > ; Subroutine is called from the other subroutine and
> > > ; from the top level code.
> > > ;
> > > .method public static main([Ljava/lang/String;)V
> > > .limit stack 1
> > > .limit locals 2
> > >
> > > jsr LabelSub
> > > jsr LabelSubSub
> > > return
> > > LabelSub:
> > > astore 1
> > > jsr LabelSubSub
> > > ret 1
> > > LabelSubSub:
> > > astore 0
> > > ret 0
> > > .end method
> > >
> > >
> > > $ java -jar c:/bin/jasmin-1.1/jasmin.jar SubSub.jj
> > > Generated: SubSub.class
> > > $ java -cp . SubSub
> > > java.lang.VerifyError: (class: SubSub, method: testSubSub signature:
> > > ()V) Illegal return from subroutine
> > > $
> > >
> > >
> > > --
> > > With best regards,
> > > Alexei,
> > > ESSD, Intel
> > >
> >
> > --
> > Egor Pasko
> >
> >
>
Re: [verifier] question about RI behavior
Posted by Mikhail Loenko <ml...@gmail.com>.
16 Mar 2007 16:05:18 +0300, Egor Pasko <eg...@gmail.com>:
> On the 0x29B day of Apache Harmony Alexei Fedotov wrote:
> > Mikhail, folks,
> > Let me attract a collective Harmony brain to the problem. Does anyone
> > have any idea why the following code doesn't pass verification on RI?
>
> looks like a bug :)
Agreed
BTW, how other VMs behave? JRockit, J9?
Thanks,
Mikhail
>
> > Thanks, Alexei
> >
> > .class public SubSub
> > .super java/lang/Object
> > .method public <init>()V
> > aload_0
> > invokespecial java/lang/Object/<init>()V
> > return
> > .end method
> >
> > ;
> > ; Subroutine is called from the other subroutine and
> > ; from the top level code.
> > ;
> > .method public static main([Ljava/lang/String;)V
> > .limit stack 1
> > .limit locals 2
> >
> > jsr LabelSub
> > jsr LabelSubSub
> > return
> > LabelSub:
> > astore 1
> > jsr LabelSubSub
> > ret 1
> > LabelSubSub:
> > astore 0
> > ret 0
> > .end method
> >
> >
> > $ java -jar c:/bin/jasmin-1.1/jasmin.jar SubSub.jj
> > Generated: SubSub.class
> > $ java -cp . SubSub
> > java.lang.VerifyError: (class: SubSub, method: testSubSub signature:
> > ()V) Illegal return from subroutine
> > $
> >
> >
> > --
> > With best regards,
> > Alexei,
> > ESSD, Intel
> >
>
> --
> Egor Pasko
>
>
Re: [verifier] question about RI behavior
Posted by Egor Pasko <eg...@gmail.com>.
On the 0x29B day of Apache Harmony Alexei Fedotov wrote:
> Mikhail, folks,
> Let me attract a collective Harmony brain to the problem. Does anyone
> have any idea why the following code doesn't pass verification on RI?
looks like a bug :)
> Thanks, Alexei
>
> .class public SubSub
> .super java/lang/Object
> .method public <init>()V
> aload_0
> invokespecial java/lang/Object/<init>()V
> return
> .end method
>
> ;
> ; Subroutine is called from the other subroutine and
> ; from the top level code.
> ;
> .method public static main([Ljava/lang/String;)V
> .limit stack 1
> .limit locals 2
>
> jsr LabelSub
> jsr LabelSubSub
> return
> LabelSub:
> astore 1
> jsr LabelSubSub
> ret 1
> LabelSubSub:
> astore 0
> ret 0
> .end method
>
>
> $ java -jar c:/bin/jasmin-1.1/jasmin.jar SubSub.jj
> Generated: SubSub.class
> $ java -cp . SubSub
> java.lang.VerifyError: (class: SubSub, method: testSubSub signature:
> ()V) Illegal return from subroutine
> $
>
>
> --
> With best regards,
> Alexei,
> ESSD, Intel
>
--
Egor Pasko