48 size_t _nsegments;
49 ZPhysicalMemorySegment* _segments;
50
51 public:
52 ZPhysicalMemory();
53 ZPhysicalMemory(size_t size);
54 ZPhysicalMemory(const ZPhysicalMemorySegment& segment);
55
56 bool is_null() const;
57 size_t size() const;
58
59 size_t nsegments() const;
60 ZPhysicalMemorySegment segment(size_t index) const;
61 void add_segment(ZPhysicalMemorySegment segment);
62
63 ZPhysicalMemory split(size_t size);
64 void clear();
65 };
66
67 class ZPhysicalMemoryManager VALUE_OBJ_CLASS_SPEC {
68 private:
69 ZPhysicalMemoryBacking _backing;
70 const size_t _max_capacity;
71 size_t _capacity;
72 size_t _used;
73
74 bool ensure_available(size_t size);
75
76 void nmt_commit(ZPhysicalMemory pmem, uintptr_t offset);
77 void nmt_uncommit(ZPhysicalMemory pmem, uintptr_t offset);
78
79 public:
80 ZPhysicalMemoryManager(size_t max_capacity, size_t granule_size);
81
82 bool is_initialized() const;
83
84 size_t max_capacity() const;
85 size_t capacity() const;
86 size_t used() const;
87 size_t available() const;
|
48 size_t _nsegments;
49 ZPhysicalMemorySegment* _segments;
50
51 public:
52 ZPhysicalMemory();
53 ZPhysicalMemory(size_t size);
54 ZPhysicalMemory(const ZPhysicalMemorySegment& segment);
55
56 bool is_null() const;
57 size_t size() const;
58
59 size_t nsegments() const;
60 ZPhysicalMemorySegment segment(size_t index) const;
61 void add_segment(ZPhysicalMemorySegment segment);
62
63 ZPhysicalMemory split(size_t size);
64 void clear();
65 };
66
67 class ZPhysicalMemoryManager VALUE_OBJ_CLASS_SPEC {
68 friend class VMStructs;
69
70 private:
71 ZPhysicalMemoryBacking _backing;
72 const size_t _max_capacity;
73 size_t _capacity;
74 size_t _used;
75
76 bool ensure_available(size_t size);
77
78 void nmt_commit(ZPhysicalMemory pmem, uintptr_t offset);
79 void nmt_uncommit(ZPhysicalMemory pmem, uintptr_t offset);
80
81 public:
82 ZPhysicalMemoryManager(size_t max_capacity, size_t granule_size);
83
84 bool is_initialized() const;
85
86 size_t max_capacity() const;
87 size_t capacity() const;
88 size_t used() const;
89 size_t available() const;
|