RFR(S) Contended Locking cleanup bucket (8062851)

David Holmes david.holmes at oracle.com
Thu Nov 6 00:34:04 UTC 2014


On 6/11/2014 10:23 AM, Coleen Phillimore wrote:
>
> On 11/5/14, 7:16 PM, David Holmes wrote:
>> On 6/11/2014 1:49 AM, Claes Redestad wrote:
>>> Hi,
>>>
>>> On 11/05/2014 05:34 AM, Daniel D. Daugherty wrote:
>>>> Greetings,
>>>>
>>>> I have a Contended Locking cleanup bucket fix ready for review.
>>>>
>>>> This fix was spun off from the Contended Locking fast enter bucket
>>>> which was sent out for review late last week. This fix cleans up
>>>> the computation of ObjectMonitor field pointers and gets rid of
>>>> the use of literal '-2' in appropriate places. For example:
>>>>
>>>> -         ld_ptr(Rmark, ObjectMonitor::owner_offset_in_bytes() - 2,
>>>> Rscratch);
>>>> +         ld_ptr(Rmark, OM_OFFSET_NO_MONITOR_VALUE(owner), Rscratch);
>>>>
>>>> The OM_OFFSET_NO_MONITOR_VALUE macro computes the offset to the
>>>> specified field and subtracts markOopDesc:monitor_value (2).
>>>> There's a nice comment in src/share/vm/runtime/objectMonitor.hpp.
>>>
>>> any reason not to add it as a function in objectMonitor.hpp instead of a
>>> macro? How about:
>>>
>>>    static int no_monitor_offset_in_bytes()  { return
>>> offset_of(ObjectMonitor, _owner) - markOopDesc::monitor_value; }
>>
>> _owner is not the only field used so you would need a function for
>> each one.
>
> I thought this would be better too.   There are only 6 functions (6
> lines) max that need this.  It would look nicer.

Only changes an upper case macro name to a lower case function  name.

> My suggestion would be to make them static int
> untagged_offset_in_bytes() or whatever monitor_value is.  It's not a
> very descriptive name so better to name the functions after what it's for.

You need the field name included in the function name:

untagged_offset_of_owner()
untagged_offset_of_xxx()

but it is only untagged if the OM is currently inflated, so then:

untagged_offset_of_XXX_for_inflated_om()

I can live with Dan's macro (which is an improvement on the original).

David

> Coleen
>
>>
>> David
>> -----
>>
>>> Example usage:
>>>
>>> -         ld_ptr(Rmark, ObjectMonitor::owner_offset_in_bytes() - 2,
>>> Rscratch);
>>> +         ld_ptr(Rmark, ObjectMonitor::no_monitor_offset_in_bytes(),
>>> Rscratch);
>>>
>>>
>>> Seems this should be inlined regardless and looks a bit cleaner to me.
>>>
>>> Thanks!
>>>
>>> /Claes
>>>
>>>>
>>>> Thanks to David Holmes for his comments on JDK-8061553 that
>>>> motivated this (long overdue) cleanup.
>>>>
>>>> This work is being tracked by the following bug ID:
>>>>
>>>>     JDK-8062851 cleanup ObjectMonitor offset adjustments
>>>>     https://bugs.openjdk.java.net/browse/JDK-8062851
>>>>
>>>> Here is the webrev URL:
>>>>
>>>> http://cr.openjdk.java.net/~dcubed/8062851-webrev/0-jdk9-hs-rt/
>>>>
>>>> Here is the JEP link:
>>>>
>>>>     https://bugs.openjdk.java.net/browse/JDK-8046133
>>>>
>>>> Testing:
>>>>
>>>> - JPRT test jobs (since this is only syntax and comment cleanup)
>>>>
>>>> Thanks, in advance, for any comments, questions or suggestions.
>>>>
>>>> Dan
>>>
>


More information about the hotspot-runtime-dev mailing list