< prev index next >

src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp

Print this page

        

@@ -2126,10 +2126,11 @@
     }
   }
 }
 
 #ifndef PRODUCT
+
 class CheckGCTimeStampsHRClosure : public HeapRegionClosure {
 private:
   unsigned _gc_time_stamp;
   bool _failures;
 

@@ -2154,10 +2155,18 @@
 void G1CollectedHeap::check_gc_time_stamps() {
   CheckGCTimeStampsHRClosure cl(_gc_time_stamp);
   heap_region_iterate(&cl);
   guarantee(!cl.failures(), "all GC time stamps should have been reset");
 }
+
+bool G1CollectedHeap::heap_lock_held_for_gc() {
+  Thread* t = Thread::current();
+  return    Heap_lock->owned_by_self()
+         || (   (t->is_GC_task_thread() ||  t->is_VM_thread())
+             && _thread_holds_heap_lock_for_gc);
+}
+
 #endif // PRODUCT
 
 void G1CollectedHeap::iterate_dirty_card_closure(CardTableEntryClosure* cl,
                                                  DirtyCardQueue* into_cset_dcq,
                                                  bool concurrent,

@@ -3334,12 +3343,10 @@
   heap_region_iterate(&cl);
 }
 #endif // PRODUCT
 
 G1CollectedHeap* G1CollectedHeap::heap() {
-  assert(_sh->kind() == CollectedHeap::G1CollectedHeap,
-         "not a garbage-first heap");
   return _g1h;
 }
 
 void G1CollectedHeap::gc_prologue(bool full /* Ignored */) {
   // always_do_update_barrier = false;
< prev index next >