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