hotspot/src/share/vm/gc_implementation/g1/g1RegionToSpaceMapper.hpp
changeset 30158 bd6094906ef8
parent 29685 c19484601161
equal deleted inserted replaced
30157:e36165b16dde 30158:bd6094906ef8
    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 
    68 
    68 
    69   bool is_committed(uintptr_t idx) const {
    69   bool is_committed(uintptr_t idx) const {
    70     return _commit_map.at(idx);
    70     return _commit_map.at(idx);
    71   }
    71   }
    72 
    72 
    73   virtual void commit_regions(uintptr_t start_idx, size_t num_regions = 1) = 0;
    73   virtual void commit_regions(uint start_idx, size_t num_regions = 1) = 0;
    74   virtual void uncommit_regions(uintptr_t start_idx, size_t num_regions = 1) = 0;
    74   virtual void uncommit_regions(uint start_idx, size_t num_regions = 1) = 0;
    75 
    75 
    76   // Creates an appropriate G1RegionToSpaceMapper for the given parameters.
    76   // Creates an appropriate G1RegionToSpaceMapper for the given parameters.
       
    77   // The actual space to be used within the given reservation is given by actual_size.
       
    78   // This is because some OSes need to round up the reservation size to guarantee
       
    79   // alignment of page_size.
    77   // The byte_translation_factor defines how many bytes in a region correspond to
    80   // The byte_translation_factor defines how many bytes in a region correspond to
    78   // a single byte in the data structure this mapper is for.
    81   // a single byte in the data structure this mapper is for.
    79   // Eg. in the card table, this value corresponds to the size a single card
    82   // Eg. in the card table, this value corresponds to the size a single card
    80   // table entry corresponds to.
    83   // table entry corresponds to in the heap.
    81   static G1RegionToSpaceMapper* create_mapper(ReservedSpace rs,
    84   static G1RegionToSpaceMapper* create_mapper(ReservedSpace rs,
    82                                               size_t os_commit_granularity,
    85                                               size_t actual_size,
       
    86                                               size_t page_size,
    83                                               size_t region_granularity,
    87                                               size_t region_granularity,
    84                                               size_t byte_translation_factor,
    88                                               size_t byte_translation_factor,
    85                                               MemoryType type);
    89                                               MemoryType type);
    86 };
    90 };
    87 
    91