Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(586)

Side by Side Diff: base/tracked_objects.h

Issue 3452030: FBTF: Moves code to the headers. (Closed) Base URL: http://src.chromium.org/git/chromium.git
Patch Set: Created 10 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « base/ref_counted_memory.cc ('k') | base/tracked_objects.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef BASE_TRACKED_OBJECTS_H_ 5 #ifndef BASE_TRACKED_OBJECTS_H_
6 #define BASE_TRACKED_OBJECTS_H_ 6 #define BASE_TRACKED_OBJECTS_H_
7 #pragma once 7 #pragma once
8 8
9 #include <map> 9 #include <map>
10 #include <string> 10 #include <string>
(...skipping 275 matching lines...) Expand 10 before | Expand all | Expand 10 after
286 // items. It protects the gathering under locks, so that it could be called via 286 // items. It protects the gathering under locks, so that it could be called via
287 // Posttask on any threads, or passed to all the target threads in parallel. 287 // Posttask on any threads, or passed to all the target threads in parallel.
288 288
289 class DataCollector { 289 class DataCollector {
290 public: 290 public:
291 typedef std::vector<Snapshot> Collection; 291 typedef std::vector<Snapshot> Collection;
292 292
293 // Construct with a list of how many threads should contribute. This helps us 293 // Construct with a list of how many threads should contribute. This helps us
294 // determine (in the async case) when we are done with all contributions. 294 // determine (in the async case) when we are done with all contributions.
295 DataCollector(); 295 DataCollector();
296 ~DataCollector();
296 297
297 // Add all stats from the indicated thread into our arrays. This function is 298 // Add all stats from the indicated thread into our arrays. This function is
298 // mutex protected, and *could* be called from any threads (although current 299 // mutex protected, and *could* be called from any threads (although current
299 // implementation serialized calls to Append). 300 // implementation serialized calls to Append).
300 void Append(const ThreadData& thread_data); 301 void Append(const ThreadData& thread_data);
301 302
302 // After the accumulation phase, the following accessor is used to process the 303 // After the accumulation phase, the following accessor is used to process the
303 // data. 304 // data.
304 Collection* collection(); 305 Collection* collection();
305 306
(...skipping 20 matching lines...) Expand all
326 327
327 DISALLOW_COPY_AND_ASSIGN(DataCollector); 328 DISALLOW_COPY_AND_ASSIGN(DataCollector);
328 }; 329 };
329 330
330 //------------------------------------------------------------------------------ 331 //------------------------------------------------------------------------------
331 // Aggregation contains summaries (totals and subtotals) of groups of Snapshot 332 // Aggregation contains summaries (totals and subtotals) of groups of Snapshot
332 // instances to provide printing of these collections on a single line. 333 // instances to provide printing of these collections on a single line.
333 334
334 class Aggregation: public DeathData { 335 class Aggregation: public DeathData {
335 public: 336 public:
336 Aggregation() : birth_count_(0) {} 337 Aggregation();
338 ~Aggregation();
337 339
338 void AddDeathSnapshot(const Snapshot& snapshot); 340 void AddDeathSnapshot(const Snapshot& snapshot);
339 void AddBirths(const Births& births); 341 void AddBirths(const Births& births);
340 void AddBirth(const BirthOnThread& birth); 342 void AddBirth(const BirthOnThread& birth);
341 void AddBirthPlace(const Location& location); 343 void AddBirthPlace(const Location& location);
342 void Write(std::string* output) const; 344 void Write(std::string* output) const;
343 void Clear(); 345 void Clear();
344 346
345 private: 347 private:
346 int birth_count_; 348 int birth_count_;
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after
462 //------------------------------------------------------------------------------ 464 //------------------------------------------------------------------------------
463 // For each thread, we have a ThreadData that stores all tracking info generated 465 // For each thread, we have a ThreadData that stores all tracking info generated
464 // on this thread. This prevents the need for locking as data accumulates. 466 // on this thread. This prevents the need for locking as data accumulates.
465 467
466 class ThreadData { 468 class ThreadData {
467 public: 469 public:
468 typedef std::map<Location, Births*> BirthMap; 470 typedef std::map<Location, Births*> BirthMap;
469 typedef std::map<const Births*, DeathData> DeathMap; 471 typedef std::map<const Births*, DeathData> DeathMap;
470 472
471 ThreadData(); 473 ThreadData();
474 ~ThreadData();
472 475
473 // Using Thread Local Store, find the current instance for collecting data. 476 // Using Thread Local Store, find the current instance for collecting data.
474 // If an instance does not exist, construct one (and remember it for use on 477 // If an instance does not exist, construct one (and remember it for use on
475 // this thread. 478 // this thread.
476 // If shutdown has already started, and we don't yet have an instance, then 479 // If shutdown has already started, and we don't yet have an instance, then
477 // return null. 480 // return null.
478 static ThreadData* current(); 481 static ThreadData* current();
479 482
480 // For a given about:objects URL, develop resulting HTML, and append to 483 // For a given about:objects URL, develop resulting HTML, and append to
481 // output. 484 // output.
(...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after
659 }; 662 };
660 static State state_; 663 static State state_;
661 664
662 DISALLOW_COPY_AND_ASSIGN(AutoTracking); 665 DISALLOW_COPY_AND_ASSIGN(AutoTracking);
663 }; 666 };
664 667
665 668
666 } // namespace tracked_objects 669 } // namespace tracked_objects
667 670
668 #endif // BASE_TRACKED_OBJECTS_H_ 671 #endif // BASE_TRACKED_OBJECTS_H_
OLDNEW
« no previous file with comments | « base/ref_counted_memory.cc ('k') | base/tracked_objects.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698