1// Copyright 2021 the V8 project authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#ifndef V8_COMMON_HIGH_ALLOCATION_THROUGHPUT_SCOPE_H_ 6#define V8_COMMON_HIGH_ALLOCATION_THROUGHPUT_SCOPE_H_ 7 8#include "include/v8-platform.h" 9 10namespace v8 { 11namespace internal { 12 13/** 14 * Scope that notifies embedder's observer about entering sections with high 15 * throughput of malloc/free operations. 16 */ 17class HighAllocationThroughputScope final { 18 public: 19 explicit HighAllocationThroughputScope(Platform* platform) 20 : observer_(platform->GetHighAllocationThroughputObserver()) { 21 observer_->LeaveSection(); 22 } 23 24 HighAllocationThroughputScope(const HighAllocationThroughputScope&) = delete; 25 HighAllocationThroughputScope& operator=( 26 const HighAllocationThroughputScope&) = delete; 27 28 ~HighAllocationThroughputScope() { observer_->EnterSection(); } 29 30 private: 31 HighAllocationThroughputObserver* observer_; 32}; 33 34} // namespace internal 35} // namespace v8 36 37#endif // V8_COMMON_HIGH_ALLOCATION_THROUGHPUT_SCOPE_H_ 38