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@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@openjdk.java.net
http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev

Reply via email to