harmony-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "chunrong lai" <chunrong...@gmail.com>
Subject Re: [class loading] what's the expected behavior when a static method is invoked before its class is initialized?
Date Sun, 04 Jan 2009 10:29:18 GMT
hi, xiaofeng:
    Observing similar class initializing trace in the logfile of EUT35, I
see HARMONY can not pass EUT35 if we do not fix HARMONY-6020.

    I did a quick test to modify some usings of the return non-inited value,
for example, processing of the bytecode of AALOAD. The test does make
Harmony pass some similar tests but still fail in other consuming cases. I
think that we just can not manually cover all of the consuming cases so we
need to fix the issue in the producing places. I am still trying this.
Lai, chunrong
Managed Runtime Technology Center, Intel
On Sun, Jan 4, 2009 at 2:59 PM, Xiao-Feng Li <xiaofeng.li@gmail.com> wrote:

> See https://issues.apache.org/jira/browse/HARMONY-6020
>
> A static method is invoked when its owning class is under
> initialization. Should we simply return without really executing any
> code of the method?
>
> In normal case, I think the calling thread will wait till the class
> initialization is done, then continue the invocation. In this case,
> the calling thread is the initializing thread, and this invocation
> actually is part of the initialization sequence.
>
> I personally would like to throw an exception since I regard the code
> as problematic. But if RI can pass the test case, and more importantly
> if EUT depends on it, we probably should find a solution.
>
> Chunrong, do you know if EUT can pass (or continue) when this issue is
> resolved?
>
> Thanks,
> xiaofeng
>
> On Sun, Jan 4, 2009 at 2:46 PM, Xiao-Feng Li (JIRA) <jira@apache.org>
> wrote:
> >
> >    [
> https://issues.apache.org/jira/browse/HARMONY-6020?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12660536#action_12660536]
> >
> > Xiao-Feng Li commented on HARMONY-6020:
> > ---------------------------------------
> >
> > When we look at this class definition:
> >
> >  class Parent {
> >    private static final Child[] childCache = new Child[5];
> >
> >    public static Child createChild(){
> >        return childCache[0];
> >    }
> >  }
> >
> > It is clear that, the semantics expectation is, childCache should be
> assigned a value when class Parent is ready (i.e., initialized). And this
> value should be assigned to childCache before anybody can access any
> Parent's method, e.g., createChild(). This is the semantics expectation. I
> guess we need to ensure this semantics.
> >
> > Can we simply let this Child clinit() execute in this way: When it tries
> to call Parent.createChild() and finds Parent is under initialization, it
> simply returns null to ROOT without really invoking createChild().
> >
> > According to the JVM spec 2.17.4, it requires any static method
> invocation must happen after the class is "initialized." The problem is, how
> to deal with the situation when a static method is invoked when the owning
> class is under initialization.
> >
> > Thanks,
> > xiaofeng
> >
> >
> >> [DRLVM] Cyclical class dependency causes a failure not seen in RI
> >> -----------------------------------------------------------------
> >>
> >>                 Key: HARMONY-6020
> >>                 URL: https://issues.apache.org/jira/browse/HARMONY-6020
> >>             Project: Harmony
> >>          Issue Type: Bug
> >>          Components: DRLVM
> >>    Affects Versions: 5.0M8
> >>         Environment: Win Vista 32-bit
> >>            Reporter: Nathan Beyer
> >>            Assignee: Chunrong Lai
> >>         Attachments: cycle-project.zip
> >>
> >>
> >> If two classes have a cyclical dependency, some unexpected results may
> occur, which are not seen on RI (Sun 6u10).
> >
> > --
> > This message is automatically generated by JIRA.
> > -
> > You can reply to this email to add a comment to the issue online.
> >
> >
>
>
>
> --
> Xiao-Feng Li
> Managed Runtime Technology Center, Intel
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message