@@ -16,11 +16,7 @@ namespace internal {
1616ProfilerListener::ProfilerListener (Isolate* isolate)
1717 : function_and_resource_names_(isolate->heap ()) {}
1818
19- ProfilerListener::~ProfilerListener () {
20- for (auto code_entry : code_entries_) {
21- delete code_entry;
22- }
23- }
19+ ProfilerListener::~ProfilerListener () = default ;
2420
2521void ProfilerListener::CallbackEvent (Name* name, Address entry_point) {
2622 CodeEventsContainer evt_rec (CodeEventRecord::CODE_CREATION);
@@ -286,19 +282,23 @@ CodeEntry* ProfilerListener::NewCodeEntry(
286282 CodeEventListener::LogEventsAndTags tag, const char * name,
287283 const char * name_prefix, const char * resource_name, int line_number,
288284 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;
285+ std::unique_ptr<CodeEntry> code_entry = base::make_unique<CodeEntry>(
286+ tag, name, name_prefix, resource_name, line_number, column_number,
287+ line_info, instruction_start);
288+ CodeEntry* raw_code_entry = code_entry.get ();
289+ code_entries_.push_back (std::move (code_entry));
290+ return raw_code_entry;
294291}
295292
296293void ProfilerListener::AddObserver (CodeEventObserver* observer) {
297294 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);
295+ if (observers_.empty ()) {
296+ code_entries_.clear ();
297+ }
298+ if (std::find (observers_.begin (), observers_.end (), observer) ==
299+ observers_.end ()) {
300+ observers_.push_back (observer);
301+ }
302302}
303303
304304void ProfilerListener::RemoveObserver (CodeEventObserver* observer) {
0 commit comments