44
55#include " src/profiler/profiler-listener.h"
66
7+ #include " src/base/template-utils.h"
78#include " src/deoptimizer.h"
89#include " src/objects-inl.h"
910#include " src/profiler/cpu-profiler.h"
@@ -16,11 +17,7 @@ namespace internal {
1617ProfilerListener::ProfilerListener (Isolate* isolate)
1718 : function_and_resource_names_(isolate->heap ()) {}
1819
19- ProfilerListener::~ProfilerListener () {
20- for (auto code_entry : code_entries_) {
21- delete code_entry;
22- }
23- }
20+ ProfilerListener::~ProfilerListener () = default ;
2421
2522void ProfilerListener::CallbackEvent (Name* name, Address entry_point) {
2623 CodeEventsContainer evt_rec (CodeEventRecord::CODE_CREATION);
@@ -286,19 +283,23 @@ CodeEntry* ProfilerListener::NewCodeEntry(
286283 CodeEventListener::LogEventsAndTags tag, const char * name,
287284 const char * name_prefix, const char * resource_name, int line_number,
288285 int column_number, JITLineInfoTable* line_info, Address instruction_start) {
289- CodeEntry* code_entry =
290- new CodeEntry (tag, name, name_prefix, resource_name, line_number,
291- column_number, line_info, instruction_start);
292- code_entries_.push_back (code_entry);
293- return code_entry;
286+ std::unique_ptr<CodeEntry> code_entry = base::make_unique<CodeEntry>(
287+ tag, name, name_prefix, resource_name, line_number, column_number,
288+ line_info, instruction_start);
289+ CodeEntry* raw_code_entry = code_entry.get ();
290+ code_entries_.push_back (std::move (code_entry));
291+ return raw_code_entry;
294292}
295293
296294void ProfilerListener::AddObserver (CodeEventObserver* observer) {
297295 base::LockGuard<base::Mutex> guard (&mutex_);
298- if (std::find (observers_.begin (), observers_.end (), observer) !=
299- observers_.end ())
300- return ;
301- observers_.push_back (observer);
296+ if (observers_.empty ()) {
297+ code_entries_.clear ();
298+ }
299+ if (std::find (observers_.begin (), observers_.end (), observer) ==
300+ observers_.end ()) {
301+ observers_.push_back (observer);
302+ }
302303}
303304
304305void ProfilerListener::RemoveObserver (CodeEventObserver* observer) {
0 commit comments