70 #include "gc/shared/gcBehaviours.hpp"
71 #include "gc/shared/gcHeapSummary.hpp"
72 #include "gc/shared/gcId.hpp"
73 #include "gc/shared/gcLocker.hpp"
74 #include "gc/shared/gcTimer.hpp"
75 #include "gc/shared/gcTraceTime.inline.hpp"
76 #include "gc/shared/generationSpec.hpp"
77 #include "gc/shared/isGCActiveMark.hpp"
78 #include "gc/shared/locationPrinter.inline.hpp"
79 #include "gc/shared/oopStorageParState.hpp"
80 #include "gc/shared/preservedMarks.inline.hpp"
81 #include "gc/shared/suspendibleThreadSet.hpp"
82 #include "gc/shared/referenceProcessor.inline.hpp"
83 #include "gc/shared/taskTerminator.hpp"
84 #include "gc/shared/taskqueue.inline.hpp"
85 #include "gc/shared/weakProcessor.inline.hpp"
86 #include "gc/shared/workerPolicy.hpp"
87 #include "logging/log.hpp"
88 #include "memory/allocation.hpp"
89 #include "memory/iterator.hpp"
90 #include "memory/resourceArea.hpp"
91 #include "memory/universe.hpp"
92 #include "oops/access.inline.hpp"
93 #include "oops/compressedOops.inline.hpp"
94 #include "oops/oop.inline.hpp"
95 #include "runtime/atomic.hpp"
96 #include "runtime/flags/flagSetting.hpp"
97 #include "runtime/handles.inline.hpp"
98 #include "runtime/init.hpp"
99 #include "runtime/orderAccess.hpp"
100 #include "runtime/threadSMR.hpp"
101 #include "runtime/vmThread.hpp"
102 #include "utilities/align.hpp"
103 #include "utilities/bitMap.inline.hpp"
104 #include "utilities/globalDefinitions.hpp"
105 #include "utilities/stack.inline.hpp"
106
107 size_t G1CollectedHeap::_humongous_object_threshold_in_words = 0;
108
109 // INVARIANTS/NOTES
4996 void G1CollectedHeap::rebuild_strong_code_roots() {
4997 RebuildStrongCodeRootClosure blob_cl(this);
4998 CodeCache::blobs_do(&blob_cl);
4999 }
5000
5001 void G1CollectedHeap::initialize_serviceability() {
5002 _g1mm->initialize_serviceability();
5003 }
5004
5005 MemoryUsage G1CollectedHeap::memory_usage() {
5006 return _g1mm->memory_usage();
5007 }
5008
5009 GrowableArray<GCMemoryManager*> G1CollectedHeap::memory_managers() {
5010 return _g1mm->memory_managers();
5011 }
5012
5013 GrowableArray<MemoryPool*> G1CollectedHeap::memory_pools() {
5014 return _g1mm->memory_pools();
5015 }
|
70 #include "gc/shared/gcBehaviours.hpp"
71 #include "gc/shared/gcHeapSummary.hpp"
72 #include "gc/shared/gcId.hpp"
73 #include "gc/shared/gcLocker.hpp"
74 #include "gc/shared/gcTimer.hpp"
75 #include "gc/shared/gcTraceTime.inline.hpp"
76 #include "gc/shared/generationSpec.hpp"
77 #include "gc/shared/isGCActiveMark.hpp"
78 #include "gc/shared/locationPrinter.inline.hpp"
79 #include "gc/shared/oopStorageParState.hpp"
80 #include "gc/shared/preservedMarks.inline.hpp"
81 #include "gc/shared/suspendibleThreadSet.hpp"
82 #include "gc/shared/referenceProcessor.inline.hpp"
83 #include "gc/shared/taskTerminator.hpp"
84 #include "gc/shared/taskqueue.inline.hpp"
85 #include "gc/shared/weakProcessor.inline.hpp"
86 #include "gc/shared/workerPolicy.hpp"
87 #include "logging/log.hpp"
88 #include "memory/allocation.hpp"
89 #include "memory/iterator.hpp"
90 #include "memory/heapInspection.hpp"
91 #include "memory/resourceArea.hpp"
92 #include "memory/universe.hpp"
93 #include "oops/access.inline.hpp"
94 #include "oops/compressedOops.inline.hpp"
95 #include "oops/oop.inline.hpp"
96 #include "runtime/atomic.hpp"
97 #include "runtime/flags/flagSetting.hpp"
98 #include "runtime/handles.inline.hpp"
99 #include "runtime/init.hpp"
100 #include "runtime/orderAccess.hpp"
101 #include "runtime/threadSMR.hpp"
102 #include "runtime/vmThread.hpp"
103 #include "utilities/align.hpp"
104 #include "utilities/bitMap.inline.hpp"
105 #include "utilities/globalDefinitions.hpp"
106 #include "utilities/stack.inline.hpp"
107
108 size_t G1CollectedHeap::_humongous_object_threshold_in_words = 0;
109
110 // INVARIANTS/NOTES
4997 void G1CollectedHeap::rebuild_strong_code_roots() {
4998 RebuildStrongCodeRootClosure blob_cl(this);
4999 CodeCache::blobs_do(&blob_cl);
5000 }
5001
5002 void G1CollectedHeap::initialize_serviceability() {
5003 _g1mm->initialize_serviceability();
5004 }
5005
5006 MemoryUsage G1CollectedHeap::memory_usage() {
5007 return _g1mm->memory_usage();
5008 }
5009
5010 GrowableArray<GCMemoryManager*> G1CollectedHeap::memory_managers() {
5011 return _g1mm->memory_managers();
5012 }
5013
5014 GrowableArray<MemoryPool*> G1CollectedHeap::memory_pools() {
5015 return _g1mm->memory_pools();
5016 }
5017
5018 class G1ParHeapInspectTask: public ParHeapInspectTask {
5019 private:
5020 HeapRegionClaimer _claimer;
5021 public:
5022 G1ParHeapInspectTask(G1CollectedHeap* heap, KlassInfoTable* shared_cit,
5023 BoolObjectClosure* filter, size_t* shared_missed_count,
5024 size_t thread_num) :
5025 ParHeapInspectTask(heap, shared_cit, filter, shared_missed_count, thread_num),
5026 _claimer(thread_num == 0 ? heap->workers()->active_workers() : thread_num) { }
5027 void do_object_iterate_parallel(ObjectClosure* cl, uint worker_id) {
5028 ((G1CollectedHeap*)getHeap())->object_iterate_parallel(cl, worker_id, &_claimer);
5029 }
5030 };
5031
5032 bool G1CollectedHeap::run_par_heap_inspect_task(KlassInfoTable* cit,
5033 BoolObjectClosure* filter,
5034 size_t* missed_count, size_t thread_num) {
5035 G1ParHeapInspectTask task(this, cit, filter, missed_count, thread_num);
5036 return object_iterate_try_parallel(&task, thread_num) && task.is_success();
5037 }
5038
5039 void G1CollectedHeap::object_iterate_parallel(ObjectClosure* cl, uint worker_id, HeapRegionClaimer* claimer) {
5040 IterateObjectClosureRegionClosure blk(cl);
5041 heap_region_par_iterate_from_worker_offset(&blk, claimer, worker_id);
5042 }
5043
5044 bool G1CollectedHeap::object_iterate_try_parallel(AbstractGangTask* task, size_t par_thread_num) {
5045 if (task == NULL) {
5046 return false;
5047 }
5048 par_thread_num = MIN2((uint)par_thread_num, workers()->total_workers());
5049 workers()->run_task(task, par_thread_num);
5050 return true;
5051 }
5052
5053
|