RFR (S) 8214822: Move ConcurrentHashTable VALUE parameter to CONFIG

David Holmes david.holmes at oracle.com
Fri Jun 21 16:02:28 UTC 2019


That looks good to me!

Thanks,
David

On 21/06/2019 8:18 am, coleen.phillimore at oracle.com wrote:
> 
> Yes, this is nicer.  Thank you for the suggestion.
> http://cr.openjdk.java.net/~coleenp/2019/8214822.02/webrev
> 
> Coleen
> 
> On 6/21/19 10:28 AM, coleen.phillimore at oracle.com wrote:
>>
>>
>> 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