RFR (L) 8174749: Use hash table/oops for MemberName table

coleen.phillimore at oracle.com coleen.phillimore at oracle.com
Tue May 23 14:17:20 UTC 2017



On 5/23/17 10:10 AM, coleen.phillimore at oracle.com wrote:
>
>
> On 5/22/17 11:23 PM, serguei.spitsyn at oracle.com wrote:
>> Hi Coleen,
>>
>>
>> I've finished reviewing, it looks great!
>
> Thank you, Serguei!
>>
>> Just some nits.
>>
>> http://cr.openjdk.java.net/~coleenp/8174749.01/webrev/src/share/vm/classfile/javaClasses.cpp.frames.html 
>>
>>
>> A dot is missed at the end of the comment line 3259:
>> 3258 // Add a reference to the loader (actually mirror because 
>> anonymous classes will not have
>> 3259 // distinct loaders) to ensure the metadata is kept alive
>> 3260 // This mirror may be different than the one in clazz field.
>>
> ok.
>
>> Dots are also missed in a couple of places in the 
>> resolvedMethodTable.?pp comments:
>>   resolvedMethodTable.hpp: L31, L35
>>   resolvedMethodTable.cpp:
>>       L130, L141 (L140 has an unnecessary dot)
>>
>
> Those comments didn't get fixed when I changed the code.  I wish the 
> compiler would check this! I fixed them:
>
> // Serially invoke removed unused oops from the table.
> // This is done late during GC.
> void ResolvedMethodTable::unlink(BoolObjectClosure* is_alive) {
>
> ...
>
> // Serially invoke "f->do_oop" on the locations of all oops in the table.
> void ResolvedMethodTable::oops_do(OopClosure* f) {
> ...
>
>> resolvedMethodTable.cpp:
>>
>>   Values of the counters _oops_removed and_oops_counted are not used.
>>   Is it a leftover from the debugging or there was a plan to log them?
>
> They are used for counting and I added this logging message to the end 
> of ResolvedMethodTable::unlink() to print them.
>
>   log_debug(membername, table) ("ResolvedMethod entries counted %d 
> removed %d",
>                                 _oos_counted, _oops_removed);

Make that _oops_counted, _oops_removed.  This is useful logging.
thanks,
Coleen
>
>>
>>   195 // For each entry in MNT, change to new method
>>
>>   MNT should be RMT now. :)
>>
>
> Changed it.  Nice catch.
>
> Thank you for reviewing this!
> Coleen
>
>>
>> Thanks,
>> Serguei
>>
>>
>>
>> On 5/17/17 09:01, coleen.phillimore at oracle.com wrote:
>>> Summary: Add a Java type called ResolvedMethodName which is 
>>> immutable and can be stored in a hashtable, that is weakly collected 
>>> by gc
>>>
>>> Thanks to John for his help with MemberName, and to-be-filed RFEs 
>>> for further improvements.  Thanks to Stefan for GC help.
>>>
>>> open webrev at http://cr.openjdk.java.net/~coleenp/8174749.01/webrev
>>> open webrev at 
>>> http://cr.openjdk.java.net/~coleenp/8174749.jdk.01/webrev
>>> bug link https://bugs.openjdk.java.net/browse/JDK-8174749
>>>
>>> Tested with RBT nightly, compiler/jsr292 tests (included in rbt 
>>> nightly), JPRT, jdk/test/java/lang/invoke, 
>>> jdk/test/java/lang/instrument tests.
>>>
>>> There are platform dependent changes in this change. They are very 
>>> straightforward, ie. add an indirection to MemberName invocations, 
>>> but could people with access to these platforms test this out for me?
>>>
>>> Performance testing showed no regression, and large 1000% 
>>> improvement for the cases that caused us to backout previous 
>>> attempts at this change.
>>>
>>> Thanks,
>>> Coleen
>>>
>>
>



More information about the hotspot-dev mailing list