28 #include "utilities/growableArray.hpp" |
28 #include "utilities/growableArray.hpp" |
29 #include "utilities/debug.hpp" |
29 #include "utilities/debug.hpp" |
30 |
30 |
31 G1SurvivorRegions::G1SurvivorRegions() : |
31 G1SurvivorRegions::G1SurvivorRegions() : |
32 _regions(new (ResourceObj::C_HEAP, mtGC) GrowableArray<HeapRegion*>(8, true, mtGC)), |
32 _regions(new (ResourceObj::C_HEAP, mtGC) GrowableArray<HeapRegion*>(8, true, mtGC)), |
33 _used_bytes(0) {} |
33 _used_bytes(0), |
|
34 _regions_on_node() {} |
34 |
35 |
35 void G1SurvivorRegions::add(HeapRegion* hr) { |
36 uint G1SurvivorRegions::add(HeapRegion* hr) { |
36 assert(hr->is_survivor(), "should be flagged as survivor region"); |
37 assert(hr->is_survivor(), "should be flagged as survivor region"); |
37 _regions->append(hr); |
38 _regions->append(hr); |
|
39 return _regions_on_node.add(hr); |
38 } |
40 } |
39 |
41 |
40 uint G1SurvivorRegions::length() const { |
42 uint G1SurvivorRegions::length() const { |
41 return (uint)_regions->length(); |
43 return (uint)_regions->length(); |
|
44 } |
|
45 |
|
46 uint G1SurvivorRegions::regions_on_node(uint node_index) const { |
|
47 return _regions_on_node.count(node_index); |
42 } |
48 } |
43 |
49 |
44 void G1SurvivorRegions::convert_to_eden() { |
50 void G1SurvivorRegions::convert_to_eden() { |
45 for (GrowableArrayIterator<HeapRegion*> it = _regions->begin(); |
51 for (GrowableArrayIterator<HeapRegion*> it = _regions->begin(); |
46 it != _regions->end(); |
52 it != _regions->end(); |