RFR (S) 8214822: Move ConcurrentHashTable VALUE parameter to CONFIG
coleen.phillimore at oracle.com
coleen.phillimore at oracle.com
Fri Jun 21 14:28:42 UTC 2019
On 6/21/19 10:12 AM, David Holmes wrote:
> Hi Coleen,
>
> On 21/06/2019 5:40 am, coleen.phillimore at oracle.com wrote:
>>
>>
>> On 6/20/19 9:29 PM, David Holmes wrote:
>>> Hi Coleen,
>>>
>>> On 20/06/2019 10:39 am, coleen.phillimore at oracle.com wrote:
>>>> Summary: make VALUE parameter be included in CONFIG configuration,
>>>> also remove BaseConfig
>>>>
>>>> Tested with tier1-3.
>>>>
>>>> open webrev at
>>>> http://cr.openjdk.java.net/~coleenp/2019/8214822.01/webrev
>>>> bug link https://bugs.openjdk.java.net/browse/JDK-8214822
>>>
>>> I don't understand all the "value" typedef's you have introduced:
>>>
>>> + typedef WeakHandle<vm_string_table_data> value;
>>> + typedef Symbol* value; // value of the Node in the hashtable
>>> + typedef WeakHandle<vm_resolved_method_table_data> value;
>>>
>>> If "value" is meant to be a type then it should be "Value", as
>>> "value" is used as the variable name everywhere. But I don't see you
>>> actually using the typedefs anywhere ??
>>
>> Here it is:
>>
>> http://cr.openjdk.java.net/~coleenp/2019/8214822.01/webrev/src/hotspot/share/utilities/concurrentHashTable.hpp.frames.html
>>
>>
>> 43 typedef typename CONFIG::value VALUE;
>>
>> I can capitalize it. I left it VALUE vs some other name to reduce
>> the changes, and capital VALUE I think helps the reader know that
>> this is like a parameterized type (from the CONFIG).
>
> I see two sources of confusion in the current code. First "value" in
> the typedef appears to conflict with "value" as a variable name. It
> may not actually conflict due to the way C++ interprets the name in
> context but it looks very strange to me to have e.g.:
>
> typedef WeakHandle<vm_resolved_method_table_data> value;
>
> static uintx get_hash(WeakHandle<vm_resolved_method_table_data> const&
> value,
> bool* is_dead) {
>
> So I'd prefer to see:
>
> typedef WeakHandle<vm_resolved_method_table_data> Value;
Okay, the compiler doesn't have a problem with it. It appears that the
parameter name hides the typedef otherwise it wouldn't compile, but
there's no warning message about that.
>
> Second now that you have the typedef why aren't you using it in the
> function declaration ie.
>
> static uintx get_hash(Value const& value, bool* is_dead) {
>
I could change this too.
Thanks,
Coleen
> Thanks,
> David
>
>> Thanks,
>> Coleen
>>>
>>> Thanks,
>>> David
>>> -----
>>>
>>>> Thanks,
>>>> Coleen
>>
More information about the hotspot-runtime-dev
mailing list