< prev index next >

src/hotspot/share/gc/shenandoah/shenandoahHeap.hpp

Print this page
rev 58143 : 8238633: JVMTI heap walk should consult GC for marking oops

@@ -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 >