diff options
Diffstat (limited to 'chromium/v8/src/heap/base-space.h')
| -rw-r--r-- | chromium/v8/src/heap/base-space.h | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/chromium/v8/src/heap/base-space.h b/chromium/v8/src/heap/base-space.h new file mode 100644 index 00000000000..4b121e470cd --- /dev/null +++ b/chromium/v8/src/heap/base-space.h @@ -0,0 +1,81 @@ +// 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 V8_HEAP_BASE_SPACE_H_ +#define V8_HEAP_BASE_SPACE_H_ + +#include <atomic> + +#include "src/base/macros.h" +#include "src/common/globals.h" +#include "src/logging/log.h" +#include "src/utils/allocation.h" + +namespace v8 { +namespace internal { + +class Heap; + +// ---------------------------------------------------------------------------- +// BaseSpace is the abstract superclass for all allocation spaces. +class V8_EXPORT_PRIVATE BaseSpace : public Malloced { + public: + Heap* heap() const { + DCHECK_NOT_NULL(heap_); + return heap_; + } + + AllocationSpace identity() { return id_; } + + // Returns name of the space. + static const char* GetSpaceName(AllocationSpace space); + + const char* name() { return GetSpaceName(id_); } + + void AccountCommitted(size_t bytes) { + DCHECK_GE(committed_ + bytes, committed_); + committed_ += bytes; + if (committed_ > max_committed_) { + max_committed_ = committed_; + } + } + + void AccountUncommitted(size_t bytes) { + DCHECK_GE(committed_, committed_ - bytes); + committed_ -= bytes; + } + + // Return the total amount committed memory for this space, i.e., allocatable + // memory and page headers. + virtual size_t CommittedMemory() { return committed_; } + + virtual size_t MaximumCommittedMemory() { return max_committed_; } + + // Approximate amount of physical memory committed for this space. + virtual size_t CommittedPhysicalMemory() = 0; + + // Returns allocated size. + virtual size_t Size() = 0; + + protected: + BaseSpace(Heap* heap, AllocationSpace id) + : heap_(heap), id_(id), committed_(0), max_committed_(0) {} + + virtual ~BaseSpace() = default; + + protected: + Heap* heap_; + AllocationSpace id_; + + // Keeps track of committed memory in a space. + std::atomic<size_t> committed_; + size_t max_committed_; + + DISALLOW_COPY_AND_ASSIGN(BaseSpace); +}; + +} // namespace internal +} // namespace v8 + +#endif // V8_HEAP_BASE_SPACE_H_ |
