| 110 | } |
| 111 | |
| 112 | void MemTracker::Init() { |
| 113 | DCHECK_GE(limit_, -1); |
| 114 | DCHECK_LE(soft_limit_, limit_); |
| 115 | if (parent_ != NULL) parent_->AddChildTracker(this); |
| 116 | // populate all_trackers_ and limit_trackers_ |
| 117 | MemTracker* tracker = this; |
| 118 | while (tracker != NULL) { |
| 119 | all_trackers_.push_back(tracker); |
| 120 | if (tracker->has_limit()) limit_trackers_.push_back(tracker); |
| 121 | tracker = tracker->parent_; |
| 122 | } |
| 123 | DCHECK_GT(all_trackers_.size(), 0); |
| 124 | DCHECK_EQ(all_trackers_[0], this); |
| 125 | } |
| 126 | |
| 127 | void MemTracker::AddChildTracker(MemTracker* tracker) { |
| 128 | lock_guard<SpinLock> l(child_trackers_lock_); |
nothing calls this directly
no test coverage detected