< prev index next > src/hotspot/share/gc/g1/g1YoungGCPostEvacuateTasks.cpp
Print this page
#include "gc/g1/g1OopClosures.inline.hpp"
#include "gc/g1/g1ParScanThreadState.hpp"
#include "gc/g1/g1RemSet.hpp"
#include "gc/g1/g1YoungGCPostEvacuateTasks.hpp"
#include "gc/shared/bufferNode.hpp"
- #include "gc/shared/preservedMarks.inline.hpp"
#include "jfr/jfrEvents.hpp"
#include "oops/access.inline.hpp"
#include "oops/compressedOops.inline.hpp"
#include "oops/oop.inline.hpp"
#include "runtime/prefetch.hpp"
HeapWord* const obj_end_addr = obj_addr + obj_size;
{
// Process marked object.
assert(obj->is_forwarded() && obj->forwardee() == obj, "must be self-forwarded");
! obj->init_mark();
hr->update_bot_for_block(obj_addr, obj_end_addr);
// Statistics
num_marked_objs++;
marked_words += obj_size;
HeapWord* const obj_end_addr = obj_addr + obj_size;
{
// Process marked object.
assert(obj->is_forwarded() && obj->forwardee() == obj, "must be self-forwarded");
! obj->unset_self_forwarded();
hr->update_bot_for_block(obj_addr, obj_end_addr);
// Statistics
num_marked_objs++;
marked_words += obj_size;
_humongous_regions_reclaimed = cl.humongous_regions_reclaimed();
_bytes_freed = cl.bytes_freed();
}
};
- class G1PostEvacuateCollectionSetCleanupTask2::RestorePreservedMarksTask : public G1AbstractSubTask {
- PreservedMarksSet* _preserved_marks;
- WorkerTask* _task;
-
- public:
- RestorePreservedMarksTask(PreservedMarksSet* preserved_marks) :
- G1AbstractSubTask(G1GCPhaseTimes::RestorePreservedMarks),
- _preserved_marks(preserved_marks),
- _task(preserved_marks->create_task()) { }
-
- virtual ~RestorePreservedMarksTask() {
- delete _task;
- }
-
- double worker_cost() const override {
- return _preserved_marks->num();
- }
-
- void do_work(uint worker_id) override { _task->work(worker_id); }
- };
-
class RedirtyLoggedCardTableEntryClosure : public G1CardTableEntryClosure {
size_t _num_dirtied;
G1CollectedHeap* _g1h;
G1CardTable* _g1_ct;
G1EvacFailureRegions* _evac_failure_regions;
if (G1CollectedHeap::heap()->has_humongous_reclaim_candidates()) {
add_serial_task(new EagerlyReclaimHumongousObjectsTask());
}
if (evac_failure_regions->has_regions_evac_failed()) {
- add_parallel_task(new RestorePreservedMarksTask(per_thread_states->preserved_marks_set()));
add_parallel_task(new ProcessEvacuationFailedRegionsTask(evac_failure_regions));
}
add_parallel_task(new RedirtyLoggedCardsTask(evac_failure_regions,
per_thread_states->rdc_buffers(),
per_thread_states->num_workers()));
< prev index next >