69 #include "gc/shared/gcBehaviours.hpp"
70 #include "gc/shared/gcHeapSummary.hpp"
71 #include "gc/shared/gcId.hpp"
72 #include "gc/shared/gcLocker.hpp"
73 #include "gc/shared/gcTimer.hpp"
74 #include "gc/shared/gcTraceTime.inline.hpp"
75 #include "gc/shared/generationSpec.hpp"
76 #include "gc/shared/isGCActiveMark.hpp"
77 #include "gc/shared/locationPrinter.inline.hpp"
78 #include "gc/shared/oopStorageParState.hpp"
79 #include "gc/shared/preservedMarks.inline.hpp"
80 #include "gc/shared/suspendibleThreadSet.hpp"
81 #include "gc/shared/referenceProcessor.inline.hpp"
82 #include "gc/shared/taskTerminator.hpp"
83 #include "gc/shared/taskqueue.inline.hpp"
84 #include "gc/shared/weakProcessor.inline.hpp"
85 #include "gc/shared/workerPolicy.hpp"
86 #include "logging/log.hpp"
87 #include "memory/allocation.hpp"
88 #include "memory/iterator.hpp"
89 #include "memory/resourceArea.hpp"
90 #include "memory/universe.hpp"
91 #include "oops/access.inline.hpp"
92 #include "oops/compressedOops.inline.hpp"
93 #include "oops/oop.inline.hpp"
94 #include "runtime/atomic.hpp"
95 #include "runtime/flags/flagSetting.hpp"
96 #include "runtime/handles.inline.hpp"
97 #include "runtime/init.hpp"
98 #include "runtime/orderAccess.hpp"
99 #include "runtime/threadSMR.hpp"
100 #include "runtime/vmThread.hpp"
101 #include "utilities/align.hpp"
102 #include "utilities/bitMap.inline.hpp"
103 #include "utilities/globalDefinitions.hpp"
104 #include "utilities/stack.inline.hpp"
105
106 size_t G1CollectedHeap::_humongous_object_threshold_in_words = 0;
107
108 // INVARIANTS/NOTES
4967 void G1CollectedHeap::rebuild_strong_code_roots() {
4968 RebuildStrongCodeRootClosure blob_cl(this);
4969 CodeCache::blobs_do(&blob_cl);
4970 }
4971
4972 void G1CollectedHeap::initialize_serviceability() {
4973 _g1mm->initialize_serviceability();
4974 }
4975
4976 MemoryUsage G1CollectedHeap::memory_usage() {
4977 return _g1mm->memory_usage();
4978 }
4979
4980 GrowableArray<GCMemoryManager*> G1CollectedHeap::memory_managers() {
4981 return _g1mm->memory_managers();
4982 }
4983
4984 GrowableArray<MemoryPool*> G1CollectedHeap::memory_pools() {
4985 return _g1mm->memory_pools();
4986 }
|
69 #include "gc/shared/gcBehaviours.hpp"
70 #include "gc/shared/gcHeapSummary.hpp"
71 #include "gc/shared/gcId.hpp"
72 #include "gc/shared/gcLocker.hpp"
73 #include "gc/shared/gcTimer.hpp"
74 #include "gc/shared/gcTraceTime.inline.hpp"
75 #include "gc/shared/generationSpec.hpp"
76 #include "gc/shared/isGCActiveMark.hpp"
77 #include "gc/shared/locationPrinter.inline.hpp"
78 #include "gc/shared/oopStorageParState.hpp"
79 #include "gc/shared/preservedMarks.inline.hpp"
80 #include "gc/shared/suspendibleThreadSet.hpp"
81 #include "gc/shared/referenceProcessor.inline.hpp"
82 #include "gc/shared/taskTerminator.hpp"
83 #include "gc/shared/taskqueue.inline.hpp"
84 #include "gc/shared/weakProcessor.inline.hpp"
85 #include "gc/shared/workerPolicy.hpp"
86 #include "logging/log.hpp"
87 #include "memory/allocation.hpp"
88 #include "memory/iterator.hpp"
89 #include "memory/heapInspection.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
4968 void G1CollectedHeap::rebuild_strong_code_roots() {
4969 RebuildStrongCodeRootClosure blob_cl(this);
4970 CodeCache::blobs_do(&blob_cl);
4971 }
4972
4973 void G1CollectedHeap::initialize_serviceability() {
4974 _g1mm->initialize_serviceability();
4975 }
4976
4977 MemoryUsage G1CollectedHeap::memory_usage() {
4978 return _g1mm->memory_usage();
4979 }
4980
4981 GrowableArray<GCMemoryManager*> G1CollectedHeap::memory_managers() {
4982 return _g1mm->memory_managers();
4983 }
4984
4985 GrowableArray<MemoryPool*> G1CollectedHeap::memory_pools() {
4986 return _g1mm->memory_pools();
4987 }
4988
4989 class G1ParHeapInspectTask: public ParHeapInspectTask {
4990 private:
4991 HeapRegionClaimer _claimer;
4992 public:
4993 G1ParHeapInspectTask(G1CollectedHeap* heap, KlassInfoTable* shared_cit,
4994 BoolObjectClosure* filter, size_t* shared_missed_count,
4995 size_t thread_num) :
4996 ParHeapInspectTask(heap, shared_cit, filter, shared_missed_count, thread_num),
4997 _claimer(thread_num == 0 ? heap->workers()->active_workers() : thread_num) { }
4998 void do_object_iterate_parallel(ObjectClosure* cl, uint worker_id) {
4999 ((G1CollectedHeap*)getHeap())->object_iterate_parallel(cl, worker_id, &_claimer);
5000 }
5001 };
5002
5003 bool G1CollectedHeap::run_par_heap_inspect_task(KlassInfoTable* cit,
5004 BoolObjectClosure* filter,
5005 size_t* missed_count, size_t thread_num) {
5006 G1ParHeapInspectTask task(this, cit, filter, missed_count, thread_num);
5007 return object_iterate_try_parallel(&task, thread_num) && task.is_success();
5008 }
5009
5010 void G1CollectedHeap::object_iterate_parallel(ObjectClosure* cl, uint worker_id, HeapRegionClaimer* claimer) {
5011 IterateObjectClosureRegionClosure blk(cl);
5012 heap_region_par_iterate_from_worker_offset(&blk, claimer, worker_id);
5013 }
5014
5015 bool G1CollectedHeap::object_iterate_try_parallel(AbstractGangTask* task, size_t par_thread_num) {
5016 if (task == NULL) {
5017 return false;
5018 }
5019 par_thread_num = MIN2((uint)par_thread_num, workers()->total_workers());
5020 workers()->run_task(task, par_thread_num);
5021 return true;
5022 }
5023
5024
|