src/hotspot/share/gc/g1/g1EdenRegions.hpp
changeset 59062 6530de931b8e
parent 54467 0c5d713cf43f
equal deleted inserted replaced
59061:df6f2350edfa 59062:6530de931b8e
    23  */
    23  */
    24 
    24 
    25 #ifndef SHARE_GC_G1_G1EDENREGIONS_HPP
    25 #ifndef SHARE_GC_G1_G1EDENREGIONS_HPP
    26 #define SHARE_GC_G1_G1EDENREGIONS_HPP
    26 #define SHARE_GC_G1_G1EDENREGIONS_HPP
    27 
    27 
       
    28 #include "gc/g1/g1RegionsOnNodes.hpp"
    28 #include "gc/g1/heapRegion.hpp"
    29 #include "gc/g1/heapRegion.hpp"
    29 #include "runtime/globals.hpp"
    30 #include "runtime/globals.hpp"
    30 #include "utilities/debug.hpp"
    31 #include "utilities/debug.hpp"
    31 
    32 
    32 class G1EdenRegions {
    33 class G1EdenRegions {
    33 private:
    34 private:
    34   int    _length;
    35   int    _length;
    35   // Sum of used bytes from all retired eden regions.
    36   // Sum of used bytes from all retired eden regions.
    36   // I.e. updated when mutator regions are retired.
    37   // I.e. updated when mutator regions are retired.
    37   volatile size_t _used_bytes;
    38   volatile size_t _used_bytes;
       
    39   G1RegionsOnNodes  _regions_on_node;
    38 
    40 
    39 public:
    41 public:
    40   G1EdenRegions() : _length(0), _used_bytes(0) { }
    42   G1EdenRegions() : _length(0), _used_bytes(0), _regions_on_node() { }
    41 
    43 
    42   void add(HeapRegion* hr) {
    44   virtual uint add(HeapRegion* hr) {
    43     assert(!hr->is_eden(), "should not already be set");
    45     assert(!hr->is_eden(), "should not already be set");
    44     _length++;
    46     _length++;
       
    47     return _regions_on_node.add(hr);
    45   }
    48   }
    46 
    49 
    47   void clear() { _length = 0; _used_bytes = 0; }
    50   void clear() {
       
    51     _length = 0;
       
    52     _used_bytes = 0;
       
    53     _regions_on_node.clear();
       
    54   }
    48 
    55 
    49   uint length() const { return _length; }
    56   uint length() const { return _length; }
       
    57   uint regions_on_node(uint node_index) const { return _regions_on_node.count(node_index); }
    50 
    58 
    51   size_t used_bytes() const { return _used_bytes; }
    59   size_t used_bytes() const { return _used_bytes; }
    52 
    60 
    53   void add_used_bytes(size_t used_bytes) {
    61   void add_used_bytes(size_t used_bytes) {
    54     _used_bytes += used_bytes;
    62     _used_bytes += used_bytes;