< prev index next >
src/hotspot/share/gc/shenandoah/shenandoahHeap.hpp
Print this page
@@ -55,10 +55,11 @@
class ShenandoahCollectionSet;
class ShenandoahFreeSet;
class ShenandoahConcurrentMark;
class ShenandoahMarkCompact;
class ShenandoahMonitoringSupport;
+class ShenandoahObjectMarker;
class ShenandoahPacer;
class ShenandoahTraversalGC;
class ShenandoahVerifier;
class ShenandoahWorkGang;
class VMStructs;
@@ -117,10 +118,11 @@
class ShenandoahHeap : public CollectedHeap {
friend class ShenandoahAsserts;
friend class VMStructs;
friend class ShenandoahGCSession;
friend class ShenandoahGCStateResetter;
+ friend class ShenandoahObjectMarker;
// ---------- Locks that guard important data structures in Heap
//
private:
ShenandoahHeapLock _lock;
@@ -559,10 +561,11 @@
// Used for parsing heap during error printing
HeapWord* block_start(const void* addr) const;
bool block_is_obj(const HeapWord* addr) const;
bool print_location(outputStream* st, void* addr) const;
+ ObjectMarker* object_marker();
// Used for native heap walkers: heap dumpers, mostly
void object_iterate(ObjectClosure* cl);
// Keep alive an object that was loaded with AS_NO_KEEPALIVE.
void keep_alive(oop obj);
@@ -652,10 +655,14 @@
// there is a tradeoff between static/dynamic footprint that translates
// into cache pressure (which is already high during marking), and
// too many atomic updates. size_t/jint is too large, jbyte is too small.
jushort** _liveness_cache;
+private:
+ bool commit_aux_bitmap();
+ void uncommit_aux_bit_map();
+
public:
inline ShenandoahMarkingContext* complete_marking_context() const;
inline ShenandoahMarkingContext* marking_context() const;
inline void mark_complete_marking_context();
inline void mark_incomplete_marking_context();
< prev index next >