Good news, bad news

Tom Rodriguez tom.rodriguez at oracle.com
Tue May 24 11:54:02 PDT 2011


I haven't been able to reproduce a crash that looks like either of the issues you reported, the ShouldNotReachHere in frame.cpp and the crash in FastScanClosure.  Do you have a test that can reproduce it and are you running against the latest version of the code?

tom

On May 23, 2011, at 7:33 PM, Ola Bini wrote:

> Hi,
> 
> I'm happy to see that the performance degradation is getting addressed.
> I would like to point out that there is still a serious crash in the
> machinery too... Have you seen any reason why that happens?
> 
> Cheers
> 
> 
> On 2011-05-24 06.11, John Rose wrote:
>> On May 23, 2011, at 3:44 PM, Tom Rodriguez wrote:
>> 
>>>> I'd *love* for intermediate static Java snippits like this to
>>>> inline straight through, even if invokeExact would be megamorphic
>>>> under normal circumstances...but I don't think that's the case
>>>> right now, right?
>>> 
>>> I haven't been following 292 that closely but it used to be a piece
>>> of code that did precisely that.
>>> 
>>> +        private Object invoke_L0() throws Throwable { +
>>> if ((boolean) test.invokeExact()) +                return
>>> target.invokeExact(); +            return fallback.invokeExact(); +
>>> }
>>> 
>>> It looks like it was reworked at some point to use
>>> selectAlternative but the optimizer was never updated to deal with
>>> it properly.  It's not particularly hard, we just need to generate
>>> code like we would for a bimorphic call site.  The current code
>>> expects to either get a constant or something else and doesn't
>>> inline if it's something else.  In this case we have a Phi of two
>>> constants which we just need to split.
>> 
>> Yes, it would be a quasi-bimorphic call site keyed from a phi of two
>> constants, instead of a profile of two receiver classes.
>> 
>>> I'm still unclear why you couldn't write your own variant of
>>> guardWithTest and have it work but my knowledge of what's really
>>> allowed is somewhat limited.
>> 
>> Those snippets will inline (I think), but at some point Charlie will
>> want to fetch a bit of constant stuff out of an instance variable.
>> That will look non-constant to the optimizer, even if the instance
>> variable is final and the enclosing object is a constant reference.
>> We made sure this happens for java.lang.invoke classes, but we
>> haven't extended it yet to user code, in part because it would have
>> its own bug tail to work through.
>> 
>> -- John _______________________________________________ mlvm-dev
>> mailing list mlvm-dev at openjdk.java.net 
>> http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev
>> 
> 
> 
> -- 
> Ola Bini (http://olabini.com)
>  Ioke - JRuby - ThoughtWorks
> 
> "Yields falsehood when quined" yields falsehood when quined.
> 
> _______________________________________________
> mlvm-dev mailing list
> mlvm-dev at openjdk.java.net
> http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev



More information about the mlvm-dev mailing list