RFR(M): 6407976: GC worker number should be unsigned
Jesper Wilhelmsson
jesper.wilhelmsson at oracle.com
Tue Apr 14 19:51:49 UTC 2015
Stefan Karlsson skrev den 14/4/15 14:05:
>
>
> On 2015-04-09 14:30, Evgeniya Stepanova wrote:
>> Hi,
>>
>> Please review fix for JDK-6407976.
>> In some source files GC worker threads numbers are being stored as
>> signed values and same values in other classes are being stored as unsigned
>> values. Fix changed GC worker thread number to be uint.
>>
>> bug: https://bugs.openjdk.java.net/browse/JDK-6407976
>> webrev: http://cr.openjdk.java.net/~eistepan/6407976/webrev.00/
>
> http://cr.openjdk.java.net/~eistepan/6407976/webrev.00/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp.patch
>
> void G1CollectedHeap::reset_taskqueue_stats() {
> - const int n = workers()->total_workers();
> - for (int i = 0; i < n; ++i) {
> + const uint n = workers()->total_workers();
> + for (int i = 0; i < (int) n; ++i) {
> task_queue(i)->stats.reset();
> }
> }
>
> Why do you have this (int) cast here? Didn't you change the task_queue function
> with:
> - RefToScanQueue *task_queue(int i) const;
> + RefToScanQueue *task_queue(uint i) const;
>
That (int) does not exist in the diffs or frame view of the webrev, only in the
patch. In the rest of the webrev 'i' in the loop is uint.
Jane, please make sure your webrev contains the latest version of your change.
For some reason old versions of some files seems to be mixed with new ones in
this webrev.
>
> http://cr.openjdk.java.net/~eistepan/6407976/webrev.00/src/share/vm/gc_implementation/shared/adaptiveSizePolicy.cpp.patch
>
> You should keep the parameter alignments:
>
> -int AdaptiveSizePolicy::calc_active_workers(uintx total_workers,
> +uint AdaptiveSizePolicy::calc_active_workers(uintx total_workers,
> uintx active_workers,
> uintx application_workers) {
>
> -int AdaptiveSizePolicy::calc_active_conc_workers(uintx total_workers,
> +uint AdaptiveSizePolicy::calc_active_conc_workers(uintx total_workers,
> uintx active_workers,
> uintx application_workers) {
>
>
> This goes for the other files as well.
>
> http://cr.openjdk.java.net/~eistepan/6407976/webrev.00/src/share/vm/runtime/vm_version.cpp.udiff.html
>
> As Igor mentioned, it would be good to only use uint:
>
> -int Abstract_VM_Version::_parallel_worker_threads = 0;
> +unsigned int Abstract_VM_Version::_parallel_worker_threads = 0;
Looking at the rest of vm_version.cpp we can see that unsigned int is
consistently used throughout the file. I don't know why, but maybe there is a
reason. We should probably check with runtime before introducing uint. In any
case I don't think this change should introduce uint in just a single place. If
we want this file to use uint that should be changed throughout the file in a
separate change.
Thanks,
/Jesper
>
> Thanks,
> StefanK
>
>>
>> tested by running all hotspot tests on all platforms
>>
>>
>> Thanks,
>> Jane
>>
>
More information about the hotspot-gc-dev
mailing list