36 // Fired after commit of the memory, i.e. the memory this listener is registered
37 // for can be accessed.
38 // Zero_filled indicates that the memory can be considered as filled with zero bytes
39 // when called.
40 virtual void on_commit(uint start_idx, size_t num_regions, bool zero_filled) = 0;
41 };
42
43 // Maps region based commit/uncommit requests to the underlying page sized virtual
44 // space.
45 class G1RegionToSpaceMapper : public CHeapObj<mtGC> {
46 private:
47 G1MappingChangedListener* _listener;
48 protected:
49 // Backing storage.
50 G1PageBasedVirtualSpace _storage;
51
52 size_t _region_granularity;
53 // Mapping management
54 CHeapBitMap _commit_map;
55
56 G1RegionToSpaceMapper(ReservedSpace rs, size_t used_size, size_t page_size, size_t region_granularity, size_t commit_factor, MemoryType type);
57
58 void fire_on_commit(uint start_idx, size_t num_regions, bool zero_filled);
59 public:
60 MemRegion reserved() { return _storage.reserved(); }
61
62 size_t reserved_size() { return _storage.reserved_size(); }
63 size_t committed_size() { return _storage.committed_size(); }
64
65 void set_mapping_changed_listener(G1MappingChangedListener* listener) { _listener = listener; }
66
67 virtual ~G1RegionToSpaceMapper() {}
68
69 bool is_committed(uintptr_t idx) const {
70 return _commit_map.at(idx);
71 }
72
73 void commit_and_set_special();
74 virtual void commit_regions(uint start_idx, size_t num_regions = 1, WorkGang* pretouch_workers = NULL) = 0;
75 virtual void uncommit_regions(uint start_idx, size_t num_regions = 1) = 0;
|
36 // Fired after commit of the memory, i.e. the memory this listener is registered
37 // for can be accessed.
38 // Zero_filled indicates that the memory can be considered as filled with zero bytes
39 // when called.
40 virtual void on_commit(uint start_idx, size_t num_regions, bool zero_filled) = 0;
41 };
42
43 // Maps region based commit/uncommit requests to the underlying page sized virtual
44 // space.
45 class G1RegionToSpaceMapper : public CHeapObj<mtGC> {
46 private:
47 G1MappingChangedListener* _listener;
48 protected:
49 // Backing storage.
50 G1PageBasedVirtualSpace _storage;
51
52 size_t _region_granularity;
53 // Mapping management
54 CHeapBitMap _commit_map;
55
56 MemoryType _memory_type;
57
58 G1RegionToSpaceMapper(ReservedSpace rs, size_t used_size, size_t page_size, size_t region_granularity, size_t commit_factor, MemoryType type);
59
60 void fire_on_commit(uint start_idx, size_t num_regions, bool zero_filled);
61 public:
62 MemRegion reserved() { return _storage.reserved(); }
63
64 size_t reserved_size() { return _storage.reserved_size(); }
65 size_t committed_size() { return _storage.committed_size(); }
66
67 void set_mapping_changed_listener(G1MappingChangedListener* listener) { _listener = listener; }
68
69 virtual ~G1RegionToSpaceMapper() {}
70
71 bool is_committed(uintptr_t idx) const {
72 return _commit_map.at(idx);
73 }
74
75 void commit_and_set_special();
76 virtual void commit_regions(uint start_idx, size_t num_regions = 1, WorkGang* pretouch_workers = NULL) = 0;
77 virtual void uncommit_regions(uint start_idx, size_t num_regions = 1) = 0;
|