Re: Lost perf between 8u40 and 9 hs-comp

2015-03-06 Thread Vladimir Ivanov
That was quick! Thanks a lot for the feedback. Ok, now we're cracking! Performance has definitely returned, and actually improved 15-20% beyond my current copy of 8u40. Bravo! I'd suggest to add pre-8u40 jdk into consideration as well. As part of LF sharing effort, I spent much time healing per

Re: Lost perf between 8u40 and 9 hs-comp

2015-03-06 Thread Charles Oliver Nutter
Ok, now we're cracking! Performance has definitely returned, and actually improved 15-20% beyond my current copy of 8u40. Bravo! I will try testing several other benchmarks, and perhaps set up a machine to do the big perf regression suite the JRuby+Truffle guys made for us. FWIW, the additional "

Re: Lost perf between 8u40 and 9 hs-comp

2015-03-06 Thread Vladimir Ivanov
John, You are absolutely right. I should've spent more time exploring the code than writing emails :-) Here's the fix: http://cr.openjdk.java.net/~vlivanov/8074548/webrev.00/ Charlie, I'd love to hear your feedback on it. It fixes the regression on bench_red_black.rb for me. Also, please,

Re: Lost perf between 8u40 and 9 hs-comp

2015-03-03 Thread John Rose
On Mar 3, 2015, at 3:21 PM, Vladimir Ivanov wrote: > > Ah, I see now. > > You suggest to conditionally insert uncommon trap in MHI.profileBoolean when > a count == 0, right? > > Won't we end up with 2 checks if VM can't fold them (e.g. some action in > between)? Maybe; that's the weak point

Re: Lost perf between 8u40 and 9 hs-comp

2015-03-03 Thread Vladimir Ivanov
Ah, I see now. You suggest to conditionally insert uncommon trap in MHI.profileBoolean when a count == 0, right? Won't we end up with 2 checks if VM can't fold them (e.g. some action in between)? Best regards, Vladimir Ivanov On 3/4/15 2:15 AM, Vladimir Ivanov wrote: Right now, VM doesn't

Re: Lost perf between 8u40 and 9 hs-comp

2015-03-03 Thread Vladimir Ivanov
Right now, VM doesn't care about profiling logic at all. The intrinsic is used only to inject profile data and all profiling happens in Java code. Once MHI.profileBoolean is intrinsified (profile is injected), no profiling actions are performed. What I'm thinking is that an uncommon trap could r

Re: Lost perf between 8u40 and 9 hs-comp

2015-03-03 Thread John Rose
On Mar 3, 2015, at 8:23 AM, Vladimir Ivanov wrote: > >> Suggestion: Instead of have the intrinsic expand to nothing, have it expand >> to an uncommon trap (on the slow path), with the uncommon trap doing the >> profile update operation (as currently coded). > Right now, VM doesn't care about

Re: Lost perf between 8u40 and 9 hs-comp

2015-03-03 Thread Charles Oliver Nutter
Thanks for looking into it Vladimir...I'm standing by to test out anything! - Charlie On Tue, Mar 3, 2015 at 10:23 AM, Vladimir Ivanov wrote: > John, > >> So let's make hindsight work for us: Is there a way (either with or >> without the split you suggest) to more firmly couple the update to th

Re: Lost perf between 8u40 and 9 hs-comp

2015-03-03 Thread Vladimir Ivanov
John, So let's make hindsight work for us: Is there a way (either with or without the split you suggest) to more firmly couple the update to the query? Separating into two operations might be the cleanest way to go, but I think it's safer to keep both halves together, as long as the slow pa

Re: Lost perf between 8u40 and 9 hs-comp

2015-03-02 Thread John Rose
On Mar 2, 2015, at 12:00 PM, Vladimir Ivanov wrote: > > Charlie, I found the root cause. > > So, the problem is never-taken branches indeed. > The way how branch profiling for GWT (JDK-8063137 [1]) is performed doesn't > work well. > > I hoped that profile collection and injection actions can

Re: Lost perf between 8u40 and 9 hs-comp

2015-03-02 Thread Vladimir Ivanov
Charlie, I found the root cause. So, the problem is never-taken branches indeed. The way how branch profiling for GWT (JDK-8063137 [1]) is performed doesn't work well. I hoped that profile collection and injection actions can be merged ( MHI.profileBoolean) into single action, but it's not th

Re: Lost perf between 8u40 and 9 hs-comp

2015-02-26 Thread Vladimir Ivanov
Thanks for the report, Charlie! The regression is caused by never-taken branch pruning [1]. -Djava.lang.invoke.MethodHandle.PROFILE_GWT=false makes the regression go away. My main suspicion is that recompilations caused by pruned branches can lead to less efficient code. But I have to dig th

Lost perf between 8u40 and 9 hs-comp

2015-02-25 Thread Charles Oliver Nutter
I'm finally at home with a working machine so I can follow up on some VM Summit to-dos. Vladimir wanted me to test out jdk9 hs-comp, which has all his latest work on method handles. I wish I could report that performance looks great, but it doesn't. Here's timing (in s) of our red/black benchmark