RFR (S) 8009575 (2nd) - Reduce Symbol::_refcount from 4 bytes to 2 bytes
Daniel D. Daugherty
daniel.daugherty at oracle.com
Fri Jun 21 11:19:15 PDT 2013
On 6/20/13 6:39 PM, Coleen Phillimore wrote:
>
> On 06/20/2013 08:27 PM, David Holmes wrote:
>> Hi Ioi,
>>
>> Reviewed. But see below.
>>
>> On 21/06/2013 4:20 AM, Ioi Lam wrote:
>>> Please review my 2nd trial for this bug fix. It's much simplified
>>> thanks
>>> to Coleen's suggestion.
>>>
>>> http://cr.openjdk.java.net/~iklam/8009575/symbol_refcount_002/
>>>
>>> Bug: Reduce Symbol::_refcount from 4 bytes to 2 bytes
>>>
>>> http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=8009575
>>> https://jbs.oracle.com/bugs/browse/JDK-8009575
>>>
>>> Summary of fix:
>>>
>>> As noted in the bug report, the main problem is _refcount needs
>>> to be
>>> atomically incremented, but the smallest unit that
>>> Atomic::incr() had
>>> supported until now was 32-bit int.
>>>
>>> With Coleen's help, I have created a platform-independent version
>>> of Atomic::incr(short*) that's based on Atomic::add(int*, n).
>>>
>>> Essentially, Atomic::incr(short*) can be implemented as
>>> Atomic::add(int*, 0x10000), as long as the short occupies the most
>>> significant 16 bits of the int. I added the macro
>>> ATOMIC_SHORT_PAIR
>>> to ensure the proper alignment.
>>
>> I preferred the original version that constrained this to
>> symbol.hpp/cpp. We don't really support Atomic jshort operations in a
>> general sense - we only have inc/dec and even then this only applies
>> when you have the pair of shorts with only one needing atomic access!
>> So I would have preferred not to see this exposed in the Atomic class.
>
> Hi David,
>
> I had opposite opinion and urged Ioi to hide the atomic short
> operations in the atomic class. It might be of general use and he
> implemented it with the minimal implementation details to distract the
> Symbol class. I have reviewed and like this change. It is really
> clean and doesn't expose endianness where it isn't interesting.
I'll have to concur that I think the ENDIAN-ness is encapsulated in
the right place in this version... Now if I can only come up with
something as clean when I get back to padding in monitors/locks...
Dan
>
>>
>> Minor comment: are the friend declarations needed for both Symbolbase
>> and Symbol?
>
> Looks like a lot of friendliness.
>
> thanks,
> Coleen
>>
>> Thanks,
>> David
>>
>>> Also Symbol::size(int) is fixed to calculate the correct space
>>> needed
>>> for a Symbol. (Same as in the previos webrev --
>>> see
>>> http://mail.openjdk.java.net/pipermail/hotspot-runtime-dev/2013-March/006385.html)
>>>
>>>
>>>
>>> Tests:
>>>
>>> JPRT
>>> UTE:
>>> - vm.tmtools.testlist nsk.sajdi.testlist vm.runtime.testlist
>>> vm.quick.testlist vm.parallel_class_loading.testlist
>>> - Serviceability Agent tested are included in these lists.
>>> MedRec
>>>
>>> Thanks
>>> - Ioi
>>>
>
More information about the hotspot-runtime-dev
mailing list