c174643b08
Process global accessors for total physical size and used size are needed for blink. These are implemented via an allocation observer that atomically updates static counters. The public api only provides getters for the counters. An internal class is in charge of updating the counters as needed. A similar split is also applied to IsAnyIncrementalOrConcurrentMarking(). Drive-by: ProcessHeap is merged into cppgc::internal::WriteBarrier. Bug: chromium:1056170 Change-Id: Iaedebd1ac9d49238ce6bdd52ffa5d1ef4d28203d Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2695394 Commit-Queue: Omer Katz <omerkatz@chromium.org> Reviewed-by: Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/master@{#72832}
37 lines
1009 B
C++
37 lines
1009 B
C++
// Copyright 2020 the V8 project authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file.
|
|
|
|
#ifndef INCLUDE_CPPGC_PROCESS_HEAP_STATISTICS_H_
|
|
#define INCLUDE_CPPGC_PROCESS_HEAP_STATISTICS_H_
|
|
|
|
#include <atomic>
|
|
#include <cstddef>
|
|
|
|
#include "v8config.h" // NOLINT(build/include_directory)
|
|
|
|
namespace cppgc {
|
|
namespace internal {
|
|
class ProcessHeapStatisticsUpdater;
|
|
} // namespace internal
|
|
|
|
class V8_EXPORT ProcessHeapStatistics final {
|
|
public:
|
|
static size_t TotalAllocatedObjectSize() {
|
|
return total_allocated_object_size_.load(std::memory_order_relaxed);
|
|
}
|
|
static size_t TotalAllocatedSpace() {
|
|
return total_allocated_space_.load(std::memory_order_relaxed);
|
|
}
|
|
|
|
private:
|
|
static std::atomic_size_t total_allocated_space_;
|
|
static std::atomic_size_t total_allocated_object_size_;
|
|
|
|
friend class internal::ProcessHeapStatisticsUpdater;
|
|
};
|
|
|
|
} // namespace cppgc
|
|
|
|
#endif // INCLUDE_CPPGC_PROCESS_HEAP_STATISTICS_H_
|