Mikhail,

nesting is OK, the question is if you call one sub2 from sub1, can you return
from sub1 if sub2 is on the top

Yes, possibility of branching to the upper level subroutine is rather
indirect implication from the spec. My verifier rejected this, but
finally I was convinced that this is ok:

https://bugs.eclipse.org/bugs/show_bug.cgi?id=194398

Thank you for looking deep into this issue.

On 7/17/07, Mikhail Loenko <[EMAIL PROTECTED]> wrote:
nesting is OK, the question is if you call one sub2 from sub1, can you return
from sub1 if sub2 is on the top

17 Jul 2007 11:25:07 +0400, Egor Pasko <[EMAIL PROTECTED]>:
> On the 0x316 day of Apache Harmony Mikhail Loenko wrote:
> > Well...
> >
> > The test in the bug passes on RI as well as the following (looking
> > weird) construction:
> >
> > public static void main(java.lang.String[]);
> >   Code:
> >    0: jsr     4
> >    3: return
> >
> >    4: astore  1
> >    6: jsr     10
> >    9: ret     0
> >
> >    10:        astore  0
> >    12:        ret     1
> >
> > }
> >
> > I think I saw in the spec that a ret from non-top subroutine is illegal.
> > But now I can't find this statement.
> >
> > So, I can easily (by removing the code) fix the new verifier to pass
> > both the test from the bug and the construction above.
> >
> > Comments, objections?
>
> soubroutines in fact can be nested, this is how nested finally blocks
> were supposed to be compiled.
>
> > Thanks,
> > Mikhail
> >
> > 2007/7/17, Mikhail Loenko <[EMAIL PROTECTED]>:
> > > Hmmm. I was using a wrong compiler. When I took 3.2.1 it prints 
VerifyError.
> > >
> > > Looking...
> > >
> > > Thanks,
> > > Mikhail
> > >
> > > 2007/7/17, Mikhail Loenko <[EMAIL PROTECTED]>:
> > > > Harmony now prints SUCCESS on the test case from 3862.
> > > > Nina, please let me know if there are outstanding issues.
> > > >
> > > > Thanks,
> > > > Mikhail
> > > >
> > > > 2007/7/15, Mikhail Loenko <[EMAIL PROTECTED]>:
> > > > > 2007/7/10, Alexei Fedotov <[EMAIL PROTECTED]>:
> > > > > > Nina,
> > > > > > My algorithm inlines subroutines, so it is important for it to know 
to
> > > > > > which subroutince each basic block belongs to. For this case I 
believe
> > > > > > the algorithm may assume that questionable parts of subroutines 
belong
> > > > > > to the subroutine which is upper in the caller chain.
> > > > > >
> > > > > > Anyway, Mikhail volunteered to check in his new verifier which 
doesn't
> > > > > > inline subroutines, so I believe we just need to wait a bit until 
this
> > > > > > happen and recheck.
> > > > >
> > > > > I'm going to finish in a few days
> > > > >
> > > > > Thanks,
> > > > > Mikhail
> > > > >
> > > > > >
> > > > > > Thanks.
> > > > > >
> > > > > >
> > > > > >
> > > > > > On 7/10/07, Nina Rinskaya <[EMAIL PROTECTED]> wrote:
> > > > > > > Alexei and all,
> > > > > > >
> > > > > > > It looks that we finally should get back to the issue because 
Eclipse
> > > > > > > compiler people say it can be not Eclipse compiler, but Harmony 
verifier
> > > > > > > issue. Here is the comment from
> > > > > > > https://bugs.eclipse.org/bugs/show_bug.cgi?id=194398#c7:
> > > > > > >
> > > > > > > "It seems that it is legal to return to a higher level in the 
subroutines
> > > > > > > call
> > > > > > > chain.
> > > > > > > From the JVMS (2nd edition):
> > > > > > > 
http://java.sun.com/docs/books/jvms/second_edition/html/ClassFile.doc.html#9308
> > > > > > >
> > > > > > > "Each instance of type returnAddress can be returned to at most 
once. If a
> > > > > > > ret
> > > > > > > instruction returns to a point in the subroutine call chain above 
the ret
> > > > > > > instruction corresponding to a given instance of type 
returnAddress, then
> > > > > > > that
> > > > > > > instance can never be used as a return address."
> > > > > > >
> > > > > > > This would mean that as long as the ret instruction is executed 
only once,
> > > > > > > this
> > > > > > > is fined. It would be a verify error if the ret 3 could be 
executed after
> > > > > > > the
> > > > > > > ret 1 has been executed.
> > > > > > >
> > > > > > > So I would close this one as WONTFIX since the code generation is 
actually
> > > > > > > fine
> > > > > > > and it seems that the Harmony bytecode verifier is too strict."
> > > > > > >
> > > > > > > Should we re-open the issue and investigate it?
> > > > > > >
> > > > > > > Thanks.
> > > > > > >
> > > > > > > --
> > > > > > > Nina
> > > > > > >
> > > > > > >
> > > > > > > On 7/9/07, Alexei Fedotov <[EMAIL PROTECTED]> wrote:
> > > > > > > >
> > > > > > > > Nina,
> > > > > > > >
> > > > > > > > It was nothing was to be sorry about. :-) I was just trying to
> > > > > > > > understand your concern myself. I believe we should pay 
attention to
> > > > > > > > the difference if it prevents any applications from running. 
There are
> > > > > > > > too much arbitrary differences to pay attention to each of them.
> > > > > > > >
> > > > > > > > For example, Sun's verifier is shipped in a form of DLL which 
allows
> > > > > > > > BEA to use it . We don't ship our verifier in a form of DLL. 
This is a
> > > > > > > > difference, but we don't file JIRA issue about it.
> > > > > > > >
> > > > > > > > From the other side behavior difference might be serious if it 
impacts
> > > > > > > > something seriously. If you think this incompatibility has a 
serious
> > > > > > > > impact, just indicate the impact and the incompatibility will be
> > > > > > > > addressed.
> > > > > > > >
> > > > > > > > Thanks.
> > > > > > > >
> > > > > > > > On 7/9/07, Nina Rinskaya <[EMAIL PROTECTED]> wrote:
> > > > > > > > > Alexei,
> > > > > > > > >
> > > > > > > > > Sorry for misleading you. I agree that it's ok to forget 
about the issue
> > > > > > > > > because there is the Eclipse compiler bug describing this 
issue. I was
> > > > > > > > just
> > > > > > > > > confused by Harmony and Sun verifiers behavior difference, 
but it's not
> > > > > > > > a
> > > > > > > > > Harmony issue.
> > > > > > > > >
> > > > > > > > > --
> > > > > > > > > Nina
> > > > > > > > >
> > > > > > > > > On 7/6/07, Alexei Fedotov <[EMAIL PROTECTED]> wrote:
> > > > > > > > > >
> > > > > > > > > > Nina,
> > > > > > > > > >
> > > > > > > > > > > but also Sun's verifier bug
> > > > > > > > > > Mmm, I'm not sure I follow. Isn't it enough to have a bug 
against
> > > > > > > > > > Eclipse compiler to forget about this issue?
> > > > > > > > > >
> > > > > > > > > > Thank you, Alexei
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > > On 7/6/07, Nina Rinskaya <[EMAIL PROTECTED]> wrote:
> > > > > > > > > > > Alexei,
> > > > > > > > > > >
> > > > > > > > > > > I'm just not sure how we track compatibility issues if 
there is a
> > > > > > > > > > difference
> > > > > > > > > > > in Harmony and RI behavior. Is it now proven that it's 
not only
> > > > > > > > Eclipse
> > > > > > > > > > > Compiler, but also Sun's verifier bug? If yes, I agree 
that it's not
> > > > > > > > > > > necessary to reopen the issue.
> > > > > > > > > > >
> > > > > > > > > > > --
> > > > > > > > > > > Nina
> > > > > > > > > > >
> > > > > > > > > > > On 7/6/07, Alexei Fedotov <[EMAIL PROTECTED]> wrote:
> > > > > > > > > > > >
> > > > > > > > > > > > Nina,
> > > > > > > > > > > >
> > > > > > > > > > > > Eclipse bug owner confirmed that this was an issue with 
the
> > > > > > > > compiler.
> > > > > > > > > > > > Why do you want to reopen the issue against DRLVM?
> > > > > > > > > > > >
> > > > > > > > > > > > Thanks.
> > > > > > > > > > > >
> > > > > > > > > > > > On 7/6/07, Nina Rinskaya <[EMAIL PROTECTED]> wrote:
> > > > > > > > > > > > > Hi all,
> > > > > > > > > > > > >
> > > > > > > > > > > > > I'm writing this just to bring your attention to
> > > > > > > > > > > > > http://issues.apache.org/jira/browse/HARMONY-3862 and 
ask
> > > > > > > > > > drlvm/verifier
> > > > > > > > > > > > > people to see whether it's necessary to reopen it.
> > > > > > > > > > > > >
> > > > > > > > > > > > > It says about VerifyError trown by Harmony when 
running a class
> > > > > > > > > > compiled
> > > > > > > > > > > > by
> > > > > > > > > > > > > Eclipse Compiler. It was closed as 'Cannot 
Reproduced', but it
> > > > > > > > is
> > > > > > > > > > > > actually
> > > > > > > > > > > > > reproduced (see HARMONY-3862 comments). It looks that 
it's not
> > > > > > > > > > Harmony
> > > > > > > > > > > > > issue, but Eclipse compiler issue (I opened the bug 
against
> > > > > > > > Eclipse
> > > > > > > > > > > > > compiler: 
https://bugs.eclipse.org/bugs/show_bug.cgi?id=194398),
> > > > > > > > and
> > > > > > > > > > RI
> > > > > > > > > > > > > issue (it should also throw VerifyError, but it 
doesn't). But
> > > > > > > > still
> > > > > > > > > > we
> > > > > > > > > > > > have
> > > > > > > > > > > > > different behavior on RI and Harmony implementations.
> > > > > > > > > > > > >
> > > > > > > > > > > > > So could someone take care of this issue and probably 
reopen it
> > > > > > > > as
> > > > > > > > > > > > > compatibility issue if it makes sense? Thanks!
> > > > > > > > > > > > >
> > > > > > > > > > > > > --
> > > > > > > > > > > > > Nina
> > > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > > > --
> > > > > > > > > > > > With best regards,
> > > > > > > > > > > > Alexei,
> > > > > > > > > > > > ESSD, Intel
> > > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > > --
> > > > > > > > > > With best regards,
> > > > > > > > > > Alexei,
> > > > > > > > > > ESSD, Intel
> > > > > > > > > >
> > > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > --
> > > > > > > > With best regards,
> > > > > > > > Alexei,
> > > > > > > > ESSD, Intel
> > > > > > > >
> > > > > > >
> > > > > >
> > > > > >
> > > > > > --
> > > > > > With best regards,
> > > > > > Alexei,
> > > > > > ESSD, Intel
> > > > > >
> > > > >
> > > >
> > >
> >
>
> --
> Egor Pasko
>
>



--
With best regards,
Alexei,
ESSD, Intel

Reply via email to