--- old/src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp 2013-09-06 14:11:07.500409961 +0200 +++ new/src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp 2013-09-06 14:11:07.400408149 +0200 @@ -194,6 +194,7 @@ }; class RefineCardTableEntryClosure; +class TransferDirtyCardsToRefinementClosure; class G1CollectedHeap : public SharedHeap { friend class VM_G1CollectForAllocation; @@ -797,6 +798,7 @@ // The closure used to refine a single card. RefineCardTableEntryClosure* _refine_cte_cl; + TransferDirtyCardsToRefinementClosure* _transfer_cte_cl; // A function to check the consistency of dirty card logs. void check_ct_logs_at_safepoint(); @@ -1066,6 +1068,7 @@ SubTasksDone* process_strong_tasks() { return _process_strong_tasks; } void set_refine_cte_cl_concurrency(bool concurrent); + void set_use_transferring_cte_cl(bool transferring); RefToScanQueue *task_queue(int i) const; @@ -1147,9 +1150,10 @@ // continues humongous regions too. void reset_gc_time_stamps(HeapRegion* hr); - void iterate_dirty_card_closure(CardTableEntryClosure* cl, - DirtyCardQueue* into_cset_dcq, - bool concurrent, int worker_i); + int iterate_dirty_card_closure(CardTableEntryClosure* cl, + CardTableEntryClosure* cleaned_cl, + DirtyCardQueue* into_cset_dcq, + bool concurrent, int worker_i); // The shared block offset table array. G1BlockOffsetSharedArray* bot_shared() const { return _bot_shared; } @@ -1544,6 +1548,8 @@ return _mark_in_progress; } + void inform_non_gc_safepoint(); + // Print the maximum heap capacity. virtual size_t max_capacity() const;