equal
deleted
inserted
replaced
41 #include "jfr/leakprofiler/sampling/objectSample.hpp" |
41 #include "jfr/leakprofiler/sampling/objectSample.hpp" |
42 #include "jfr/leakprofiler/sampling/objectSampler.hpp" |
42 #include "jfr/leakprofiler/sampling/objectSampler.hpp" |
43 #include "jfr/leakprofiler/utilities/granularTimer.hpp" |
43 #include "jfr/leakprofiler/utilities/granularTimer.hpp" |
44 #include "logging/log.hpp" |
44 #include "logging/log.hpp" |
45 #include "memory/universe.hpp" |
45 #include "memory/universe.hpp" |
46 #include "oops/markWord.hpp" |
|
47 #include "oops/oop.inline.hpp" |
46 #include "oops/oop.inline.hpp" |
48 #include "runtime/safepoint.hpp" |
47 #include "runtime/safepoint.hpp" |
49 #include "utilities/globalDefinitions.hpp" |
48 #include "utilities/globalDefinitions.hpp" |
50 |
49 |
51 PathToGcRootsOperation::PathToGcRootsOperation(ObjectSampler* sampler, EdgeStore* edge_store, int64_t cutoff, bool emit_all) : |
50 PathToGcRootsOperation::PathToGcRootsOperation(ObjectSampler* sampler, EdgeStore* edge_store, int64_t cutoff, bool emit_all) : |
99 } |
98 } |
100 |
99 |
101 // Save the original markWord for the potential leak objects, |
100 // Save the original markWord for the potential leak objects, |
102 // to be restored on function exit |
101 // to be restored on function exit |
103 ObjectSampleMarker marker; |
102 ObjectSampleMarker marker; |
104 if (ObjectSampleCheckpoint::mark(_sampler, marker, _emit_all) == 0) { |
103 if (ObjectSampleCheckpoint::save_mark_words(_sampler, marker, _emit_all) == 0) { |
105 // no valid samples to process |
104 // no valid samples to process |
106 return; |
105 return; |
107 } |
106 } |
108 |
107 |
109 // Necessary condition for attempting a root set iteration |
108 // Necessary condition for attempting a root set iteration |