< prev index next >
src/share/vm/gc/g1/g1CollectionSet.cpp
Print this page
rev 11942 : imported patch 8165313-sort-collection-set-at-end
rev 11943 : [mq]: 8165313-mikael-review1
*** 30,39 ****
--- 30,40 ----
#include "gc/g1/heapRegion.inline.hpp"
#include "gc/g1/heapRegionRemSet.hpp"
#include "gc/g1/heapRegionSet.hpp"
#include "logging/logStream.hpp"
#include "utilities/debug.hpp"
+ #include "utilities/quickSort.hpp"
G1CollectorState* G1CollectionSet::collector_state() {
return _g1->collector_state();
}
*** 394,409 ****
phase_times()->record_young_cset_choice_time_ms((young_end_time_sec - young_start_time_sec) * 1000.0);
return time_remaining_ms;
}
! static int compare_region_idx(const void *a, const void*b) {
! uint const first = *(uint*)a;
! uint const second = *(uint*)b;
! assert(first != second, "Two regions with the same index %u in the collection set", first);
! if (first > second) {
return 1;
} else {
return -1;
}
}
--- 395,409 ----
phase_times()->record_young_cset_choice_time_ms((young_end_time_sec - young_start_time_sec) * 1000.0);
return time_remaining_ms;
}
! static int compare_region_idx(const uint a, const uint b) {
! if (a > b) {
return 1;
+ } else if (a == b) {
+ return 0;
} else {
return -1;
}
}
*** 503,513 ****
old_region_length(), predicted_old_time_ms, time_remaining_ms);
double non_young_end_time_sec = os::elapsedTime();
phase_times()->record_non_young_cset_choice_time_ms((non_young_end_time_sec - non_young_start_time_sec) * 1000.0);
! qsort(_collection_set_regions, _collection_set_cur_length, sizeof(uint), compare_region_idx);
}
#ifdef ASSERT
class G1VerifyYoungCSetIndicesClosure : public HeapRegionClosure {
private:
--- 503,513 ----
old_region_length(), predicted_old_time_ms, time_remaining_ms);
double non_young_end_time_sec = os::elapsedTime();
phase_times()->record_non_young_cset_choice_time_ms((non_young_end_time_sec - non_young_start_time_sec) * 1000.0);
! QuickSort::sort<uint>(_collection_set_regions, (int)_collection_set_cur_length, compare_region_idx, true);
}
#ifdef ASSERT
class G1VerifyYoungCSetIndicesClosure : public HeapRegionClosure {
private:
< prev index next >