harmony-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Xiao-Feng Li" <xiaofeng...@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 11:26:42 GMT
Thanks. Then it is an issue blocking EUT3.5.

Can we simply do not invoke any static method of a class under initialization?

This needs to add a check in the prolog of the static method on the
initialization status of the owning class. It should not incur serious
performance issue since it is a memory load plus a check.

Is this VM SPEC expected behavior?

Thanks,
xiaofeng

On Sun, Jan 4, 2009 at 6:29 PM, chunrong lai <chunronglai@gmail.com> wrote:
> 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
>>
>



-- 
Managed Runtime Technology Center, Intel

Mime
View raw message