Vladimir Kozlov wrote:
>>> The update_rate() could be not called if there are no MethodCounters
>>> (other places may need to be fixed for that). Actually I don't
>>> understand how we have compilation request for a method without
>>> MethodCounters. Counters should be created before that.
>> It's not always the case. MDO can be created first (e.g. compilation can
>> force MDO creation [1]) and there's no need in MethodCounters (see
>> InterpreterGenerator::generate_counter_incr [2]).
>
> I think this is contradiction in tiered implementation. We don't
> allocate MethodCounters for TieredCompilation as you pointed but tiered
> code uses them.
[1]
Method::build_interpreter_method_data(methodHandle, Thread*)
ciMethod::ensure_method_data(methodHandle)
ciMethod::ensure_method_data()
GraphBuilder::try_inline_full(ciMethod*, bool, Bytecodes::Code, Instruction*)
[2] http://hg.openjdk.java.net/jdk9/hs-comp/hotspot/file/tip/src/cpu/x86/vm/templateInterpreter_x86_32.cpp#l340
>>> The update_rate() could be not called if there are no MethodCounters
>>> (other places may need to be fixed for that). Actually I don't
>>> understand how we have compilation request for a method without
>>> MethodCounters. Counters should be created before that.
>> It's not always the case. MDO can be created first (e.g. compilation can
>> force MDO creation [1]) and there's no need in MethodCounters (see
>> InterpreterGenerator::generate_counter_incr [2]).
>
> I think this is contradiction in tiered implementation. We don't
> allocate MethodCounters for TieredCompilation as you pointed but tiered
> code uses them.
[1]
Method::build_interpreter_method_data(methodHandle, Thread*)
ciMethod::ensure_method_data(methodHandle)
ciMethod::ensure_method_data()
GraphBuilder::try_inline_full(ciMethod*, bool, Bytecodes::Code, Instruction*)
[2] http://hg.openjdk.java.net/jdk9/hs-comp/hotspot/file/tip/src/cpu/x86/vm/templateInterpreter_x86_32.cpp#l340
- duplicates
-
JDK-8058564 Tiered compilation performance drop in PIT
- Closed
- relates to
-
JDK-8023461 Thread holding lock at safepoint that vm can block on: MethodCompileQueue_lock
- Closed
-
JDK-8043063 Code aging should allocate MethodCounters when flushing a method
- Resolved