Request for review: 8016302: Change type of the number of GC workers to unsigned int (2)

Vladimir Kempik vladimir.kempik at oracle.com
Thu Sep 19 07:22:26 PDT 2013


Hello

Thanks for comments, here is updated webrev - 
http://cr.openjdk.java.net/~vkempik/8016302/webrev.01/

Vladimir.
On 19.09.2013 14:30, Per Liden wrote:
> Hi Vladimir,
>
> Some comments:
>
>> --- old/src/share/vm/gc_implementation/g1/concurrentMark.cpp    Wed 
>> Sep 18 19:01:08 2013
>> +++ new/src/share/vm/gc_implementation/g1/concurrentMark.cpp Wed Sep 
>> 18 19:01:06 2013
>> @@ -1803,7 +1803,7 @@
>>
>>  class G1NoteEndOfConcMarkClosure : public HeapRegionClosure {
>>    G1CollectedHeap* _g1;
>> -  int _worker_num;
>> +  uint _worker_num;
>>    size_t _max_live_bytes;
>>    uint _regions_claimed;
>>    size_t _freed_bytes;
>
> It looks like _worker_num can be removed as it's never actually used.
>
>> --- old/src/share/vm/gc_implementation/g1/dirtyCardQueue.cpp    Wed 
>> Sep 18 19:01:11 2013
>> +++ new/src/share/vm/gc_implementation/g1/dirtyCardQueue.cpp Wed Sep 
>> 18 19:01:09 2013
>> @@ -125,11 +125,11 @@
>>
>>    // We get the the number of any par_id that this thread
>>    // might have already claimed.
>> -  int worker_i = thread->get_claimed_par_id();
>> +  uint worker_i = thread->get_claimed_par_id();
>>
>>    // If worker_i is not -1 then the thread has already claimed
>>    // a par_id. We make note of it using the already_claimed value
>> -  if (worker_i != -1) {
>> +  if ((int)worker_i != -1) {
>>      already_claimed = true;
>>    } else {
>>
>> @@ -141,7 +141,7 @@
>>    }
>>
>>    bool b = false;
>> -  if (worker_i != -1) {
>> +  if ((int)worker_i != -1) {
>>      b = DirtyCardQueue::apply_closure_to_buffer(_closure, buf, 0,
>>                                                  _sz, true, worker_i);
>>      if (b) Atomic::inc(&_processed_buffers_mut);
>
> Casting to int and comparing with -1 looks a bit ugly. Maybe it's 
> worth making Thread::_claimed_par_id an uint and the functions to 
> operate on that also take uint. Then use UINT_MAX for the special case.
>
>> --- old/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp    Wed 
>> Sep 18 19:01:17 2013
>> +++ new/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp Wed Sep 
>> 18 19:01:14 2013
>> @@ -1212,9 +1212,9 @@
>>  class RebuildRSOutOfRegionClosure: public HeapRegionClosure {
>>    G1CollectedHeap*   _g1h;
>>    UpdateRSOopClosure _cl;
>> -  int                _worker_i;
>> +  uint                _worker_i;
>>  public:
>
> Indentation.
>
>> @@ -122,8 +122,8 @@
>>              // RSet updating while within an evacuation pause.
>>              // In this case worker_i should be the id of a GC worker 
>> thread
>>              assert(SafepointSynchronize::is_at_safepoint(), "Should 
>> be at a safepoint");
>> -            assert(worker_i < (int) (ParallelGCThreads == 0 ? 1 : 
>> ParallelGCThreads),
>> -                   err_msg("incorrect worker id: "INT32_FORMAT, 
>> worker_i));
>> +            assert((int)worker_i < (int) (ParallelGCThreads == 0 ? 1 
>> : ParallelGCThreads),
>> +                   err_msg("incorrect worker id: "UINT32_FORMAT, 
>> worker_i));
>
> Looks like both (int) casts can be removed.
>
>> --- old/src/share/vm/gc_implementation/g1/g1RemSet.cpp    Wed Sep 18 
>> 19:01:37 2013
>> +++ new/src/share/vm/gc_implementation/g1/g1RemSet.cpp    Wed Sep 18 
>> 19:01:35 2013
>> @@ -112,7 +112,7 @@
>>    CardTableModRefBS *_ct_bs;
>>
>>    double _strong_code_root_scan_time_sec;
>> -  int    _worker_i;
>> +  uint    _worker_i;
>>    int    _block_size;
>>    bool   _try_claimed;
>
> Indentation.
>
>>      // is during RSet updating within an evacuation pause.
>>      // In this case worker_i should be the id of a GC worker thread.
>>      assert(SafepointSynchronize::is_at_safepoint(), "not during an 
>> evacuation pause");
>> -    assert(worker_i < (int) (ParallelGCThreads == 0 ? 1 : 
>> ParallelGCThreads), "should be a GC worker");
>> +    assert((int)worker_i < (int) (ParallelGCThreads == 0 ? 1 : 
>> ParallelGCThreads), "should be a GC worker");
>
> Again looks like both int casts can be removed.
>
>>    // We cache the value of 'oc' closure into the appropriate slot in 
>> the
>>    // _cset_rs_update_cl for this worker
>> -  assert(worker_i < (int)n_workers(), "sanity");
>> +  assert((int)worker_i < (int)n_workers(), "sanity");
>>    _cset_rs_update_cl[worker_i] = oc;
>
> Same here.
>
>
> cheers,
> /Per
>
>
> On 09/19/2013 12:00 PM, Vladimir Kempik wrote:
>> Hi all,
>>
>> Could I have a couple of reviews for this change?
>>
>> http://cr.openjdk.java.net/~vkempik/8016302/webrev.00/
>>
>> In 7121618 variables representing GC workers (worker id, worker id
>> offset) have been changed from int to unsigned int.
>>
>> Since then, code reintroduced the use of int's for this type of
>> variable; fixing this by aligning the code to use uints for ints.
>>
>> Thanks,
>> Vladimir
>>
>



More information about the hotspot-gc-dev mailing list