89 MemoryType type);
90
91 static G1RegionToSpaceMapper* create_heap_mapper(ReservedSpace rs,
92 size_t actual_size,
93 size_t page_size,
94 size_t region_granularity,
95 size_t byte_translation_factor,
96 MemoryType type);
97 };
98
99 // G1RegionToSpaceMapper implementation where
100 // part of space is mapped to dram and part to nv-dimm
101 class G1RegionToHeteroSpaceMapper : public G1RegionToSpaceMapper {
102 private:
103 size_t _pages_per_region;
104 G1RegionToSpaceMapper* _dram_mapper;
105 uint _num_committed_dram;
106 uint _num_committed_nvdimm;
107 uint _start_index_of_nvdimm;
108 uint _start_index_of_dram;
109
110 void map_nvdimm_space(ReservedSpace rs);
111
112 public:
113 G1RegionToHeteroSpaceMapper(ReservedSpace rs, size_t used_size, size_t page_size, size_t region_granularity, size_t commit_factor, MemoryType type);
114 uint num_committed_dram();
115 uint num_committed_nvdimm();
116
117 virtual void commit_regions(uint start_idx, size_t num_regions = 1, WorkGang* pretouch_workers = NULL);
118 virtual void uncommit_regions(uint start_idx, size_t num_regions = 1);
119 };
120 #endif // SHARE_VM_GC_G1_G1REGIONTOSPACEMAPPER_HPP
|
89 MemoryType type);
90
91 static G1RegionToSpaceMapper* create_heap_mapper(ReservedSpace rs,
92 size_t actual_size,
93 size_t page_size,
94 size_t region_granularity,
95 size_t byte_translation_factor,
96 MemoryType type);
97 };
98
99 // G1RegionToSpaceMapper implementation where
100 // part of space is mapped to dram and part to nv-dimm
101 class G1RegionToHeteroSpaceMapper : public G1RegionToSpaceMapper {
102 private:
103 size_t _pages_per_region;
104 G1RegionToSpaceMapper* _dram_mapper;
105 uint _num_committed_dram;
106 uint _num_committed_nvdimm;
107 uint _start_index_of_nvdimm;
108 uint _start_index_of_dram;
109 bool _success;
110
111 public:
112 G1RegionToHeteroSpaceMapper(ReservedSpace rs, size_t used_size, size_t page_size, size_t region_granularity, size_t commit_factor, MemoryType type);
113 uint num_committed_dram() const;
114 uint num_committed_nvdimm() const;
115 bool success() { return _success; }
116
117 virtual void commit_regions(uint start_idx, size_t num_regions = 1, WorkGang* pretouch_workers = NULL);
118 virtual void uncommit_regions(uint start_idx, size_t num_regions = 1);
119 };
120 #endif // SHARE_VM_GC_G1_G1REGIONTOSPACEMAPPER_HPP
|