22 *
23 */
24
25 #include "precompiled.hpp"
26 #include "gc/g1/g1BiasedArray.hpp"
27 #include "gc/g1/g1RegionToSpaceMapper.hpp"
28 #include "memory/allocation.inline.hpp"
29 #include "memory/virtualspace.hpp"
30 #include "services/memTracker.hpp"
31 #include "utilities/bitMap.inline.hpp"
32
33 G1RegionToSpaceMapper::G1RegionToSpaceMapper(ReservedSpace rs,
34 size_t used_size,
35 size_t page_size,
36 size_t region_granularity,
37 size_t commit_factor,
38 MemoryType type) :
39 _storage(rs, used_size, page_size),
40 _region_granularity(region_granularity),
41 _listener(NULL),
42 _commit_map(rs.size() * commit_factor / region_granularity) {
43 guarantee(is_power_of_2(page_size), "must be");
44 guarantee(is_power_of_2(region_granularity), "must be");
45
46 MemTracker::record_virtual_memory_type((address)rs.base(), type);
47 }
48
49 // G1RegionToSpaceMapper implementation where the region granularity is larger than
50 // or the same as the commit granularity.
51 // Basically, the space corresponding to one region region spans several OS pages.
52 class G1RegionsLargerThanCommitSizeMapper : public G1RegionToSpaceMapper {
53 private:
54 size_t _pages_per_region;
55
56 public:
57 G1RegionsLargerThanCommitSizeMapper(ReservedSpace rs,
58 size_t actual_size,
59 size_t page_size,
60 size_t alloc_granularity,
61 size_t commit_factor,
62 MemoryType type) :
|
22 *
23 */
24
25 #include "precompiled.hpp"
26 #include "gc/g1/g1BiasedArray.hpp"
27 #include "gc/g1/g1RegionToSpaceMapper.hpp"
28 #include "memory/allocation.inline.hpp"
29 #include "memory/virtualspace.hpp"
30 #include "services/memTracker.hpp"
31 #include "utilities/bitMap.inline.hpp"
32
33 G1RegionToSpaceMapper::G1RegionToSpaceMapper(ReservedSpace rs,
34 size_t used_size,
35 size_t page_size,
36 size_t region_granularity,
37 size_t commit_factor,
38 MemoryType type) :
39 _storage(rs, used_size, page_size),
40 _region_granularity(region_granularity),
41 _listener(NULL),
42 _commit_map(rs.size() * commit_factor / region_granularity, mtGC) {
43 guarantee(is_power_of_2(page_size), "must be");
44 guarantee(is_power_of_2(region_granularity), "must be");
45
46 MemTracker::record_virtual_memory_type((address)rs.base(), type);
47 }
48
49 // G1RegionToSpaceMapper implementation where the region granularity is larger than
50 // or the same as the commit granularity.
51 // Basically, the space corresponding to one region region spans several OS pages.
52 class G1RegionsLargerThanCommitSizeMapper : public G1RegionToSpaceMapper {
53 private:
54 size_t _pages_per_region;
55
56 public:
57 G1RegionsLargerThanCommitSizeMapper(ReservedSpace rs,
58 size_t actual_size,
59 size_t page_size,
60 size_t alloc_granularity,
61 size_t commit_factor,
62 MemoryType type) :
|