Mercurial > hg > graal-jvmci-8
comparison src/share/vm/gc_implementation/g1/g1RegionToSpaceMapper.hpp @ 22977:33e421924c67
8058354: SPECjvm2008-Derby -2.7% performance regression on Solaris-X64 starting with 9-b29
Summary: Allow use of large pages for auxiliary data structures in G1. Clean up existing interfaces.
Reviewed-by: jmasa, pliden, stefank
author | tschatzl |
---|---|
date | Tue, 07 Apr 2015 10:53:51 +0200 |
parents | e7d0505c8a30 |
children | e5406a79ae90 |
comparison
equal
deleted
inserted
replaced
22976:5788dbd1f2d6 | 22977:33e421924c67 |
---|---|
44 private: | 44 private: |
45 G1MappingChangedListener* _listener; | 45 G1MappingChangedListener* _listener; |
46 protected: | 46 protected: |
47 // Backing storage. | 47 // Backing storage. |
48 G1PageBasedVirtualSpace _storage; | 48 G1PageBasedVirtualSpace _storage; |
49 size_t _commit_granularity; | 49 |
50 size_t _region_granularity; | 50 size_t _region_granularity; |
51 // Mapping management | 51 // Mapping management |
52 BitMap _commit_map; | 52 BitMap _commit_map; |
53 | 53 |
54 G1RegionToSpaceMapper(ReservedSpace rs, size_t commit_granularity, size_t region_granularity, MemoryType type); | 54 G1RegionToSpaceMapper(ReservedSpace rs, size_t used_size, size_t page_size, size_t region_granularity, MemoryType type); |
55 | 55 |
56 void fire_on_commit(uint start_idx, size_t num_regions, bool zero_filled); | 56 void fire_on_commit(uint start_idx, size_t num_regions, bool zero_filled); |
57 public: | 57 public: |
58 MemRegion reserved() { return _storage.reserved(); } | 58 MemRegion reserved() { return _storage.reserved(); } |
59 | 59 |
65 | 65 |
66 bool is_committed(uintptr_t idx) const { | 66 bool is_committed(uintptr_t idx) const { |
67 return _commit_map.at(idx); | 67 return _commit_map.at(idx); |
68 } | 68 } |
69 | 69 |
70 virtual void commit_regions(uintptr_t start_idx, size_t num_regions = 1) = 0; | 70 virtual void commit_regions(uint start_idx, size_t num_regions = 1) = 0; |
71 virtual void uncommit_regions(uintptr_t start_idx, size_t num_regions = 1) = 0; | 71 virtual void uncommit_regions(uint start_idx, size_t num_regions = 1) = 0; |
72 | 72 |
73 // Creates an appropriate G1RegionToSpaceMapper for the given parameters. | 73 // Creates an appropriate G1RegionToSpaceMapper for the given parameters. |
74 // The actual space to be used within the given reservation is given by actual_size. | |
75 // This is because some OSes need to round up the reservation size to guarantee | |
76 // alignment of page_size. | |
74 // The byte_translation_factor defines how many bytes in a region correspond to | 77 // The byte_translation_factor defines how many bytes in a region correspond to |
75 // a single byte in the data structure this mapper is for. | 78 // a single byte in the data structure this mapper is for. |
76 // Eg. in the card table, this value corresponds to the size a single card | 79 // Eg. in the card table, this value corresponds to the size a single card |
77 // table entry corresponds to. | 80 // table entry corresponds to in the heap. |
78 static G1RegionToSpaceMapper* create_mapper(ReservedSpace rs, | 81 static G1RegionToSpaceMapper* create_mapper(ReservedSpace rs, |
79 size_t os_commit_granularity, | 82 size_t actual_size, |
83 size_t page_size, | |
80 size_t region_granularity, | 84 size_t region_granularity, |
81 size_t byte_translation_factor, | 85 size_t byte_translation_factor, |
82 MemoryType type); | 86 MemoryType type); |
83 }; | 87 }; |
84 | 88 |