src/hotspot/share/gc/z/zMemory.hpp
changeset 58812 4adca7312d8f
parent 54834 39ba09047e19
equal deleted inserted replaced
58811:38f4701d6587 58812:4adca7312d8f
    47   void grow_from_front(size_t size);
    47   void grow_from_front(size_t size);
    48   void grow_from_back(size_t size);
    48   void grow_from_back(size_t size);
    49 };
    49 };
    50 
    50 
    51 class ZMemoryManager {
    51 class ZMemoryManager {
       
    52 public:
       
    53   typedef void (*CreateDestroyCallback)(const ZMemory* area);
       
    54   typedef void (*ResizeCallback)(const ZMemory* area, size_t size);
       
    55 
       
    56   struct Callbacks {
       
    57     CreateDestroyCallback _create;
       
    58     CreateDestroyCallback _destroy;
       
    59     ResizeCallback        _shrink_from_front;
       
    60     ResizeCallback        _shrink_from_back;
       
    61     ResizeCallback        _grow_from_front;
       
    62     ResizeCallback        _grow_from_back;
       
    63 
       
    64     Callbacks();
       
    65   };
       
    66 
    52 private:
    67 private:
    53   ZList<ZMemory> _freelist;
    68   ZList<ZMemory> _freelist;
       
    69   Callbacks      _callbacks;
       
    70 
       
    71   ZMemory* create(uintptr_t start, size_t size);
       
    72   void destroy(ZMemory* area);
       
    73   void shrink_from_front(ZMemory* area, size_t size);
       
    74   void shrink_from_back(ZMemory* area, size_t size);
       
    75   void grow_from_front(ZMemory* area, size_t size);
       
    76   void grow_from_back(ZMemory* area, size_t size);
    54 
    77 
    55 public:
    78 public:
       
    79   ZMemoryManager();
       
    80 
       
    81   void register_callbacks(const Callbacks& callbacks);
       
    82 
    56   uintptr_t alloc_from_front(size_t size);
    83   uintptr_t alloc_from_front(size_t size);
    57   uintptr_t alloc_from_front_at_most(size_t size, size_t* allocated);
    84   uintptr_t alloc_from_front_at_most(size_t size, size_t* allocated);
    58   uintptr_t alloc_from_back(size_t size);
    85   uintptr_t alloc_from_back(size_t size);
    59   uintptr_t alloc_from_back_at_most(size_t size, size_t* allocated);
    86   uintptr_t alloc_from_back_at_most(size_t size, size_t* allocated);
       
    87 
    60   void free(uintptr_t start, size_t size);
    88   void free(uintptr_t start, size_t size);
    61 };
    89 };
    62 
    90 
    63 #endif // SHARE_GC_Z_ZMEMORY_HPP
    91 #endif // SHARE_GC_Z_ZMEMORY_HPP