summaryrefslogtreecommitdiffstats
path: root/chromium/v8/src/heap/base-space.h
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/v8/src/heap/base-space.h')
-rw-r--r--chromium/v8/src/heap/base-space.h81
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_