Request for review: 8010862: The Method counter fields used for profiling can be allocated lazily
Jiangli Zhou
jiangli.zhou at oracle.com
Wed Apr 3 17:59:43 PDT 2013
Hi Roland,
Thanks for the review! Please see comments below.
On 04/03/2013 08:35 AM, Roland Westrelin wrote:
> Hi Jiangli,
>
>> Please review the following change for 8010862.
>>
>> http://cr.openjdk.java.net/~jiangli/8010862/webrev.00/
> parseHelper.cpp:
>
> Why did you add a ctrl edge to the store (it didn't have one before)?
It's to avoid the following assert:
# assert(C->get_alias_index(adr_type) != Compile::AliasIdxRaw || ctl !=
NULL) failed: raw memory operations should have control edge
>
> c1_LIRGenerator.cpp:
>
> 3047 LIR_Opr meth = new_register(T_METADATA);
> 3048 __ metadata2reg(method->constant_encoding(), meth);
>
> is not used unless notify is true, right? I would move that code to the if (notify) {
You are right. Fixed.
>
> In advancedThresholdPolicy.cpp:
>
> If you get an exception in AdvancedThresholdPolicy::update_rate() you're leaving it pending and returning. Shouldn't you clear it?
>
> ciMethod.cpp:
>
> Same thing with ciMethod::ensure_method_counters(), the exception is left pending.
>
> ciReplay.cpp:
>
> The method counters allocation can fail here as well, right?
>
> interpreterRuntime.cpp:
> An exception would be left pending in InterpreterRuntime::exception_handler_for_exception().
Thanks for pointing those out. For the issue with
AdvancedThresholdPolicy::update_rate() and
InterpreterRuntime::exception_handler_for_exception(), how about
checking and clearing the pending exception in the private
Method::get_method_counters()?
MethodCounters* get_method_counters(TRAPS) {
if (_method_counters == NULL) {
build_method_counters(this,CHECK_AND_CLEAR_NULL);
}
return _method_counters;
}
For ciMethod::ensure_method_counters() and ciReplay::initialize(),
change the calls build_method_counters() to also use the
CHECK_AND_CLEAR_* variations?
mcs = Method::build_method_counters(method,CHECK_AND_CLEAR);
>
> In compilationPolicy.cpp:
> The assert(mcs != NULL, "");
> a useful message why mcs cannot be null here?
Fixed.
Thanks again!
Jiangli
>
> The rest looks good to me.
>
> Roland.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/hotspot-runtime-dev/attachments/20130403/c4ece03f/attachment.html
More information about the hotspot-runtime-dev
mailing list