-
Type:
Enhancement
-
Resolution: Unresolved
-
Priority:
P4
-
Affects Version/s: None
-
Component/s: hotspot
Parallel GC, for some reason implements specialized local methods to iterate over array slices (PSPromotionManager::process_array_chunk_work):
template <class T>
void PSPromotionManager::process_array_chunk_work(oop obj, int start, int end) {
assert(start <= end, "invariant");
T* const base = (T*)objArrayOop(obj)->base();
T* p = base + start;
T* const chunk_end = base + end;
while (p < chunk_end) {
claim_or_forward_depth(p);
++p;
}
}
Investigate and potentially remove this code duplication.
template <class T>
void PSPromotionManager::process_array_chunk_work(oop obj, int start, int end) {
assert(start <= end, "invariant");
T* const base = (T*)objArrayOop(obj)->base();
T* p = base + start;
T* const chunk_end = base + end;
while (p < chunk_end) {
claim_or_forward_depth(p);
++p;
}
}
Investigate and potentially remove this code duplication.