| 237 | } |
| 238 | |
| 239 | bool ReservationTracker::TryConsumeFromMemTracker( |
| 240 | int64_t reservation_increase, MemLimit mem_limit_mode) { |
| 241 | DCHECK_GE(reservation_increase, 0); |
| 242 | if (mem_tracker_ == nullptr) return true; |
| 243 | if (GetParentMemTracker() == nullptr) { |
| 244 | // At the topmost link, which may be a MemTracker with a limit, we need to use |
| 245 | // TryConsume() to check the limit. |
| 246 | return mem_tracker_->TryConsume(reservation_increase, mem_limit_mode); |
| 247 | } else { |
| 248 | // For lower links, there shouldn't be a limit to enforce, so we just need to |
| 249 | // update the consumption of the linked MemTracker since the reservation is |
| 250 | // already reflected in its parent. |
| 251 | mem_tracker_->ConsumeLocal(reservation_increase, GetParentMemTracker()); |
| 252 | return true; |
| 253 | } |
| 254 | } |
| 255 | |
| 256 | void ReservationTracker::ReleaseToMemTracker(int64_t reservation_decrease) { |
| 257 | DCHECK_GE(reservation_decrease, 0); |
no test coverage detected