< prev index next >

src/share/vm/gc/shared/collectedHeap.hpp

Print this page

        

@@ -75,10 +75,11 @@
 
 //
 // CollectedHeap
 //   GenCollectedHeap
 //   G1CollectedHeap
+//   ShenandoahHeap
 //   ParallelScavengeHeap
 //
 class CollectedHeap : public CHeapObj<mtInternal> {
   friend class VMStructs;
   friend class IsGCActiveMark; // Block structured external access to _is_gc_active

@@ -183,19 +184,22 @@
 
  public:
   enum Name {
     GenCollectedHeap,
     ParallelScavengeHeap,
-    G1CollectedHeap
+    G1CollectedHeap,
+    ShenandoahHeap
   };
 
   static inline size_t filler_array_max_size() {
     return _filler_array_max_size;
   }
 
   virtual Name kind() const = 0;
 
+  virtual HeapWord* tlab_post_allocation_setup(HeapWord* obj);
+
   /**
    * Returns JNI error code JNI_ENOMEM if memory could not be allocated,
    * and JNI_OK on success.
    */
   virtual jint initialize() = 0;

@@ -296,10 +300,16 @@
   inline static oop array_allocate_nozero(KlassHandle klass, int size, int length, TRAPS);
 
   inline static void post_allocation_install_obj_klass(KlassHandle klass,
                                                        oop obj);
 
+  virtual uint oop_extra_words();
+
+#ifndef CC_INTERP
+  virtual void compile_prepare_oop(MacroAssembler* masm, Register obj);
+#endif
+
   // Raw memory allocation facilities
   // The obj and array allocate methods are covers for these methods.
   // mem_allocate() should never be
   // called to allocate TLABs, only individual objects.
   virtual HeapWord* mem_allocate(size_t size,

@@ -568,10 +578,16 @@
   void trace_heap_after_gc(const GCTracer* gc_tracer);
 
   // Heap verification
   virtual void verify(bool silent, VerifyOption option) = 0;
 
+  // Shut down all GC workers and other GC related threads.
+  virtual void shutdown();
+
+  // Accumulate additional statistics from GCLABs.
+  virtual void accumulate_statistics_all_gclabs();
+
   // Non product verification and debugging.
 #ifndef PRODUCT
   // Support for PromotionFailureALot.  Return true if it's time to cause a
   // promotion failure.  The no-argument version uses
   // this->_promotion_failure_alot_count as the counter.

@@ -601,10 +617,14 @@
                                              jbyte* accuracy,
                                              jint len) {
     return false;
   }
 
+  virtual bool is_obj_ill(const oop obj) const {
+    return true;
+  }
+
   /////////////// Unit tests ///////////////
 
   NOT_PRODUCT(static void test_is_in();)
 };
 
< prev index next >