27 #include "gc/z/zAddressRangeMap.hpp" 28 #include "gc/z/zGlobals.hpp" 29 #include "gc/z/zPageTableEntry.hpp" 30 #include "memory/allocation.hpp" 31 32 class ZPage; 33 34 class ZPageTable { 35 friend class VMStructs; 36 friend class ZPageTableIterator; 37 38 private: 39 ZAddressRangeMap<ZPageTableEntry, ZPageSizeMinShift> _map; 40 41 ZPageTableEntry get_entry(ZPage* page) const; 42 void put_entry(ZPage* page, ZPageTableEntry entry); 43 44 public: 45 ZPageTable(); 46 47 ZPageTableEntry* addr() const; 48 49 ZPage* get(uintptr_t addr) const; 50 void insert(ZPage* page); 51 void remove(ZPage* page); 52 53 bool is_relocating(uintptr_t addr) const; 54 void set_relocating(ZPage* page); 55 void clear_relocating(ZPage* page); 56 }; 57 58 class ZPageTableIterator : public StackObj { 59 private: 60 ZAddressRangeMapIterator<ZPageTableEntry, ZPageSizeMinShift> _iter; 61 ZPage* _prev; 62 63 public: 64 ZPageTableIterator(const ZPageTable* pagetable); 65 66 bool next(ZPage** page); 67 }; 68 | 27 #include "gc/z/zAddressRangeMap.hpp" 28 #include "gc/z/zGlobals.hpp" 29 #include "gc/z/zPageTableEntry.hpp" 30 #include "memory/allocation.hpp" 31 32 class ZPage; 33 34 class ZPageTable { 35 friend class VMStructs; 36 friend class ZPageTableIterator; 37 38 private: 39 ZAddressRangeMap<ZPageTableEntry, ZPageSizeMinShift> _map; 40 41 ZPageTableEntry get_entry(ZPage* page) const; 42 void put_entry(ZPage* page, ZPageTableEntry entry); 43 44 public: 45 ZPageTable(); 46 47 ZPage* get(uintptr_t addr) const; 48 void insert(ZPage* page); 49 void remove(ZPage* page); 50 51 bool is_relocating(uintptr_t addr) const; 52 void set_relocating(ZPage* page); 53 void clear_relocating(ZPage* page); 54 }; 55 56 class ZPageTableIterator : public StackObj { 57 private: 58 ZAddressRangeMapIterator<ZPageTableEntry, ZPageSizeMinShift> _iter; 59 ZPage* _prev; 60 61 public: 62 ZPageTableIterator(const ZPageTable* pagetable); 63 64 bool next(ZPage** page); 65 }; 66 |