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