src/hotspot/share/gc/z/zMemory.hpp
changeset 58812 4adca7312d8f
parent 54834 39ba09047e19
--- a/src/hotspot/share/gc/z/zMemory.hpp	Mon Oct 28 11:23:48 2019 +0100
+++ b/src/hotspot/share/gc/z/zMemory.hpp	Mon Oct 28 11:24:11 2019 +0100
@@ -49,14 +49,42 @@
 };
 
 class ZMemoryManager {
+public:
+  typedef void (*CreateDestroyCallback)(const ZMemory* area);
+  typedef void (*ResizeCallback)(const ZMemory* area, size_t size);
+
+  struct Callbacks {
+    CreateDestroyCallback _create;
+    CreateDestroyCallback _destroy;
+    ResizeCallback        _shrink_from_front;
+    ResizeCallback        _shrink_from_back;
+    ResizeCallback        _grow_from_front;
+    ResizeCallback        _grow_from_back;
+
+    Callbacks();
+  };
+
 private:
   ZList<ZMemory> _freelist;
+  Callbacks      _callbacks;
+
+  ZMemory* create(uintptr_t start, size_t size);
+  void destroy(ZMemory* area);
+  void shrink_from_front(ZMemory* area, size_t size);
+  void shrink_from_back(ZMemory* area, size_t size);
+  void grow_from_front(ZMemory* area, size_t size);
+  void grow_from_back(ZMemory* area, size_t size);
 
 public:
+  ZMemoryManager();
+
+  void register_callbacks(const Callbacks& callbacks);
+
   uintptr_t alloc_from_front(size_t size);
   uintptr_t alloc_from_front_at_most(size_t size, size_t* allocated);
   uintptr_t alloc_from_back(size_t size);
   uintptr_t alloc_from_back_at_most(size_t size, size_t* allocated);
+
   void free(uintptr_t start, size_t size);
 };