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