RFR: 8219713: Reduce work in DefaultMethods::generate_default_methods

Karen Kinnear karen.kinnear at oracle.com
Thu Mar 7 14:57:29 UTC 2019


Claes,

Exactly. And consider that reviewed by me.

And many thanks,
Karen

> On Mar 6, 2019, at 3:22 PM, Claes Redestad <claes.redestad at oracle.com> wrote:
> 
> Hi Karen,
> 
> On 2019-03-05 23:48, Karen Kinnear wrote:
>> Claes,
>> Lois and I met today to discuss these changes.
>> First - we are very grateful you dove in, identified performance issues and are proposing
>> solutions.
>> Second - could you please check in three out of the four kinds of changes:
>> 1) remove extra walking of Object
>> 2) remove unused code
>> 3) change the order of the conditionals so we reduce time spent in Lookup.
> 
> Ok, basically the entire patch, plus this to revert the changes on line
> 606:
> 
> diff -r 9ee9ac93e39b src/hotspot/share/classfile/defaultMethods.cpp
> --- a/src/hotspot/share/classfile/defaultMethods.cpp	Wed Mar 06 21:28:03 2019 +0100
> +++ b/src/hotspot/share/classfile/defaultMethods.cpp	Wed Mar 06 21:28:33 2019 +0100
> @@ -603,7 +603,7 @@
>   while (super != NULL) {
>     for (int i = 0; i < super->methods()->length(); ++i) {
>       Method* m = super->methods()->at(i);
> -      if (m->is_overpass() || (m->is_static() && !SystemDictionary::is_nonpublic_Object_method(m))) {
> +      if (m->is_overpass() || m->is_static()) {
>         // m is a method that would have been a miranda if not for the
>         // default method processing that occurred on behalf of our superclass,
>         // so it's a method we want to re-examine in this new context.  That is,
> 
> I'll run some sanity testing and push.
> 
>> And - could you please file a follow-up RFE to investigate improvements in the
>> default method processing for static methods, with notes about the performance benefits
>> of skipping processing for RegisterNatives and <clinit>?
> 
> Sure, I'll do that.
> 
> Thanks!
> 
> /Claes



More information about the hotspot-runtime-dev mailing list