mirror of
https://github.com/openjdk/jdk.git
synced 2026-03-15 10:23:28 +00:00
8370406: Parallel: Refactor ParCompactionManager::mark_and_push
Reviewed-by: fandreuzzi, iwalulya
This commit is contained in:
parent
da968dc645
commit
5a83d6a835
@ -188,7 +188,6 @@ public:
|
||||
ParMarkBitMap* mark_bitmap() { return _mark_bitmap; }
|
||||
|
||||
// Save for later processing. Must not fail.
|
||||
inline void push(oop obj);
|
||||
inline void push_region(size_t index);
|
||||
|
||||
// Check mark and maybe push on marking stack.
|
||||
|
||||
@ -56,10 +56,6 @@ inline bool ParCompactionManager::steal(int queue_num, size_t& region) {
|
||||
return region_task_queues()->steal(queue_num, region);
|
||||
}
|
||||
|
||||
inline void ParCompactionManager::push(oop obj) {
|
||||
marking_stack()->push(ScannerTask(obj));
|
||||
}
|
||||
|
||||
void ParCompactionManager::push_region(size_t index)
|
||||
{
|
||||
#ifdef ASSERT
|
||||
@ -74,24 +70,26 @@ void ParCompactionManager::push_region(size_t index)
|
||||
template <typename T>
|
||||
inline void ParCompactionManager::mark_and_push(T* p) {
|
||||
T heap_oop = RawAccess<>::oop_load(p);
|
||||
if (!CompressedOops::is_null(heap_oop)) {
|
||||
oop obj = CompressedOops::decode_not_null(heap_oop);
|
||||
assert(ParallelScavengeHeap::heap()->is_in(obj), "should be in heap");
|
||||
|
||||
if (mark_bitmap()->mark_obj(obj)) {
|
||||
if (StringDedup::is_enabled() &&
|
||||
java_lang_String::is_instance(obj) &&
|
||||
psStringDedup::is_candidate_from_mark(obj)) {
|
||||
_string_dedup_requests.add(obj);
|
||||
}
|
||||
|
||||
ContinuationGCSupport::transform_stack_chunk(obj);
|
||||
|
||||
assert(_marking_stats_cache != nullptr, "inv");
|
||||
_marking_stats_cache->push(obj, obj->size());
|
||||
push(obj);
|
||||
}
|
||||
if (CompressedOops::is_null(heap_oop)) {
|
||||
return;
|
||||
}
|
||||
|
||||
oop obj = CompressedOops::decode_not_null(heap_oop);
|
||||
if (!mark_bitmap()->mark_obj(obj)) {
|
||||
// Marked by another worker.
|
||||
return;
|
||||
}
|
||||
|
||||
if (StringDedup::is_enabled() &&
|
||||
java_lang_String::is_instance(obj) &&
|
||||
psStringDedup::is_candidate_from_mark(obj)) {
|
||||
_string_dedup_requests.add(obj);
|
||||
}
|
||||
|
||||
ContinuationGCSupport::transform_stack_chunk(obj);
|
||||
|
||||
_marking_stats_cache->push(obj, obj->size());
|
||||
marking_stack()->push(ScannerTask(obj));
|
||||
}
|
||||
|
||||
inline void ParCompactionManager::FollowStackClosure::do_void() {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user