< prev index next >

src/share/vm/gc_implementation/g1/g1RegionToSpaceMapper.hpp

Print this page
rev 7989 : 8058354: SPECjvm2008-Derby -2.7% performance regression on Solaris-X64 starting with 9-b29
Summary: Allow partial use of large pages for auxiliary data structures in G1.
Reviewed-by: jmasa
rev 7990 : imported patch 8058354-stefank-review
rev 7991 : imported patch 8058354-more-stefank-review
rev 7992 : imported patch 8058354-more-more-stefank-review
rev 7993 : imported patch per-comments

*** 44,59 **** private: G1MappingChangedListener* _listener; protected: // Backing storage. G1PageBasedVirtualSpace _storage; ! size_t _commit_granularity; size_t _region_granularity; // Mapping management BitMap _commit_map; ! G1RegionToSpaceMapper(ReservedSpace rs, size_t commit_granularity, size_t region_granularity, MemoryType type); void fire_on_commit(uint start_idx, size_t num_regions, bool zero_filled); public: MemRegion reserved() { return _storage.reserved(); } --- 44,59 ---- private: G1MappingChangedListener* _listener; protected: // Backing storage. G1PageBasedVirtualSpace _storage; ! size_t _region_granularity; // Mapping management BitMap _commit_map; ! G1RegionToSpaceMapper(ReservedSpace rs, size_t used_size, size_t page_size, size_t region_granularity, MemoryType type); void fire_on_commit(uint start_idx, size_t num_regions, bool zero_filled); public: MemRegion reserved() { return _storage.reserved(); }
*** 68,87 **** bool is_committed(uintptr_t idx) const { return _commit_map.at(idx); } ! virtual void commit_regions(uintptr_t start_idx, size_t num_regions = 1) = 0; ! virtual void uncommit_regions(uintptr_t start_idx, size_t num_regions = 1) = 0; // Creates an appropriate G1RegionToSpaceMapper for the given parameters. // The byte_translation_factor defines how many bytes in a region correspond to // a single byte in the data structure this mapper is for. // Eg. in the card table, this value corresponds to the size a single card ! // table entry corresponds to. static G1RegionToSpaceMapper* create_mapper(ReservedSpace rs, ! size_t os_commit_granularity, size_t region_granularity, size_t byte_translation_factor, MemoryType type); }; --- 68,91 ---- bool is_committed(uintptr_t idx) const { return _commit_map.at(idx); } ! virtual void commit_regions(uint start_idx, size_t num_regions = 1) = 0; ! virtual void uncommit_regions(uint start_idx, size_t num_regions = 1) = 0; // Creates an appropriate G1RegionToSpaceMapper for the given parameters. + // The actual space to be used within the given reservation is given by actual_size. + // This is because some OSes need to round up the reservation size to guarantee + // alignment of page_size. // The byte_translation_factor defines how many bytes in a region correspond to // a single byte in the data structure this mapper is for. // Eg. in the card table, this value corresponds to the size a single card ! // table entry corresponds to in the heap. static G1RegionToSpaceMapper* create_mapper(ReservedSpace rs, ! size_t actual_size, ! size_t page_size, size_t region_granularity, size_t byte_translation_factor, MemoryType type); };
< prev index next >