Lost perf between 8u40 and 9 hs-comp
Vladimir Ivanov
vladimir.x.ivanov at oracle.com
Tue Mar 3 23:21:42 UTC 2015
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 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 re-run the interpreter
>> definition of MHI.profileBoolean using Action_reinterpret.
>> That would update the state, wouldn't it? Then the compiler would
>> recompile (after a little time) and see the updated state.
> Just setting reexecute=true isn't enough - MHI.profileBoolean is located
> earlier in bytecode, but only last instruction will be reexecuted.
>
> Here's an excerpt from GWT bytecode:
> ...
> invokevirtual MH.invokeBasic:(...)I
> invokestatic MHI.profileBoolean:(Z[I)Z <== profiling
> istore n
> ...
> iload n
> iconst_1
> iand
> ifeq m <== trap happens here
> ...
>
> In general, there could be other actions between ifeq &
> MHI.profileBoolean, so it's not possible to restore state and reexecute
> the code starting from MHI.profileBoolean.
>
> Am I missing something?
>
> Best regards,
> Vladimir Ivanov
More information about the mlvm-dev
mailing list