comparison src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp @ 20335:eec72fa4b108

8040722: G1: Clean up usages of heap_region_containing Reviewed-by: tschatzl, jmasa
author brutisso
date Tue, 19 Aug 2014 12:39:06 +0200
parents 18bf0b66de52
children 6701abbc4441
comparison
equal deleted inserted replaced
20334:ff3169f25621 20335:eec72fa4b108
1488 1488
1489 // A CollectedHeap will contain some number of spaces. This finds the 1489 // A CollectedHeap will contain some number of spaces. This finds the
1490 // space containing a given address, or else returns NULL. 1490 // space containing a given address, or else returns NULL.
1491 virtual Space* space_containing(const void* addr) const; 1491 virtual Space* space_containing(const void* addr) const;
1492 1492
1493 // A G1CollectedHeap will contain some number of heap regions. This 1493 // Returns the HeapRegion that contains addr. addr must not be NULL.
1494 // finds the region containing a given address, or else returns NULL. 1494 template <class T>
1495 inline HeapRegion* heap_region_containing_raw(const T addr) const;
1496
1497 // Returns the HeapRegion that contains addr. addr must not be NULL.
1498 // If addr is within a humongous continues region, it returns its humongous start region.
1495 template <class T> 1499 template <class T>
1496 inline HeapRegion* heap_region_containing(const T addr) const; 1500 inline HeapRegion* heap_region_containing(const T addr) const;
1497
1498 // Like the above, but requires "addr" to be in the heap (to avoid a
1499 // null-check), and unlike the above, may return an continuing humongous
1500 // region.
1501 template <class T>
1502 inline HeapRegion* heap_region_containing_raw(const T addr) const;
1503 1501
1504 // A CollectedHeap is divided into a dense sequence of "blocks"; that is, 1502 // A CollectedHeap is divided into a dense sequence of "blocks"; that is,
1505 // each address in the (reserved) heap is a member of exactly 1503 // each address in the (reserved) heap is a member of exactly
1506 // one block. The defining characteristic of a block is that it is 1504 // one block. The defining characteristic of a block is that it is
1507 // possible to find its size, and thus to progress forward to the next 1505 // possible to find its size, and thus to progress forward to the next
1640 1638
1641 // Determine if an object is dead, given the object and also 1639 // Determine if an object is dead, given the object and also
1642 // the region to which the object belongs. An object is dead 1640 // the region to which the object belongs. An object is dead
1643 // iff a) it was not allocated since the last mark and b) it 1641 // iff a) it was not allocated since the last mark and b) it
1644 // is not marked. 1642 // is not marked.
1645
1646 bool is_obj_dead(const oop obj, const HeapRegion* hr) const { 1643 bool is_obj_dead(const oop obj, const HeapRegion* hr) const {
1647 return 1644 return
1648 !hr->obj_allocated_since_prev_marking(obj) && 1645 !hr->obj_allocated_since_prev_marking(obj) &&
1649 !isMarkedPrev(obj); 1646 !isMarkedPrev(obj);
1650 } 1647 }
1651 1648
1652 // This function returns true when an object has been 1649 // This function returns true when an object has been
1653 // around since the previous marking and hasn't yet 1650 // around since the previous marking and hasn't yet
1654 // been marked during this marking. 1651 // been marked during this marking.
1655
1656 bool is_obj_ill(const oop obj, const HeapRegion* hr) const { 1652 bool is_obj_ill(const oop obj, const HeapRegion* hr) const {
1657 return 1653 return
1658 !hr->obj_allocated_since_next_marking(obj) && 1654 !hr->obj_allocated_since_next_marking(obj) &&
1659 !isMarkedNext(obj); 1655 !isMarkedNext(obj);
1660 } 1656 }