Mercurial > hg > openjdk > jdk8u > hotspot
changeset 9152:150ab470bf7f
8205516: JFR tool
Reviewed-by: mgronlun
author | egahlin |
---|---|
date | Wed, 05 Dec 2018 16:40:12 +0100 |
parents | 41515291559a |
children | 69fb91513217 |
files | src/share/vm/jfr/leakprofiler/emitEventOperation.cpp src/share/vm/jfr/leakprofiler/sampling/objectSampler.cpp src/share/vm/jfr/leakprofiler/sampling/objectSampler.hpp src/share/vm/jfr/leakprofiler/sampling/sampleList.cpp src/share/vm/jfr/leakprofiler/sampling/sampleList.hpp |
diffstat | 5 files changed, 16 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/src/share/vm/jfr/leakprofiler/emitEventOperation.cpp Tue Aug 28 10:10:11 2018 -0400 +++ b/src/share/vm/jfr/leakprofiler/emitEventOperation.cpp Wed Dec 05 16:40:12 2018 +0100 @@ -157,12 +157,14 @@ const jlong last_sweep = _emit_all ? max_jlong : _object_sampler->last_sweep().value(); int count = 0; - for (int i = 0; i < _object_sampler->item_count(); ++i) { - const ObjectSample* sample = _object_sampler->item_at(i); - if (sample->is_alive_and_older_than(last_sweep)) { - write_event(sample, edge_store); + const ObjectSample* current = _object_sampler->first(); + while (current != NULL) { + ObjectSample* prev = current->prev(); + if (current->is_alive_and_older_than(last_sweep)) { + write_event(current, edge_store); ++count; } + current = prev; } // restore thread local stack trace and thread id
--- a/src/share/vm/jfr/leakprofiler/sampling/objectSampler.cpp Tue Aug 28 10:10:11 2018 -0400 +++ b/src/share/vm/jfr/leakprofiler/sampling/objectSampler.cpp Wed Dec 05 16:40:12 2018 +0100 @@ -121,6 +121,10 @@ return _list->last(); } +const ObjectSample* ObjectSampler::first() const { + return _list->first(); +} + const ObjectSample* ObjectSampler::last_resolved() const { return _list->last_resolved(); }
--- a/src/share/vm/jfr/leakprofiler/sampling/objectSampler.hpp Tue Aug 28 10:10:11 2018 -0400 +++ b/src/share/vm/jfr/leakprofiler/sampling/objectSampler.hpp Wed Dec 05 16:40:12 2018 +0100 @@ -69,6 +69,7 @@ const ObjectSample* item_at(int index) const; ObjectSample* item_at(int index); int item_count() const; + const ObjectSample* first() const; const ObjectSample* last() const; const ObjectSample* last_resolved() const; void set_last_resolved(const ObjectSample* sample);
--- a/src/share/vm/jfr/leakprofiler/sampling/sampleList.cpp Tue Aug 28 10:10:11 2018 -0400 +++ b/src/share/vm/jfr/leakprofiler/sampling/sampleList.cpp Wed Dec 05 16:40:12 2018 +0100 @@ -45,6 +45,10 @@ return _in_use_list.head(); } +ObjectSample* SampleList::first() const { + return _in_use_list.tail(); +} + const ObjectSample* SampleList::last_resolved() const { return _last_resolved; }
--- a/src/share/vm/jfr/leakprofiler/sampling/sampleList.hpp Tue Aug 28 10:10:11 2018 -0400 +++ b/src/share/vm/jfr/leakprofiler/sampling/sampleList.hpp Wed Dec 05 16:40:12 2018 +0100 @@ -53,6 +53,7 @@ void set_last_resolved(const ObjectSample* sample); ObjectSample* get(); ObjectSample* last() const; + ObjectSample* first() const; void release(ObjectSample* sample); const ObjectSample* last_resolved() const; ObjectSample* reuse(ObjectSample* sample);