diff -r 26a697375de3 -r f91c482793e6 hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.hpp --- a/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.hpp Mon Nov 17 21:32:32 2014 +0100 +++ b/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.hpp Tue Nov 18 10:23:26 2014 +0100 @@ -608,7 +608,6 @@ GCHeapSummary _last_heap_summary; MetaspaceSummary _last_metaspace_summary; - void register_foreground_gc_start(GCCause::Cause cause); void register_gc_start(GCCause::Cause cause); void register_gc_end(); void save_heap_summary(); @@ -695,8 +694,6 @@ int _numYields; size_t _numDirtyCards; size_t _sweep_count; - // Number of full gc's since the last concurrent gc. - uint _full_gcs_since_conc_gc; // Occupancy used for bootstrapping stats double _bootstrap_occupancy; @@ -760,14 +757,14 @@ NOT_PRODUCT(bool par_simulate_overflow();) // MT version // CMS work methods - void checkpointRootsInitialWork(bool asynch); // Initial checkpoint work + void checkpointRootsInitialWork(); // Initial checkpoint work // A return value of false indicates failure due to stack overflow - bool markFromRootsWork(bool asynch); // Concurrent marking work + bool markFromRootsWork(); // Concurrent marking work public: // FIX ME!!! only for testing - bool do_marking_st(bool asynch); // Single-threaded marking - bool do_marking_mt(bool asynch); // Multi-threaded marking + bool do_marking_st(); // Single-threaded marking + bool do_marking_mt(); // Multi-threaded marking private: @@ -788,20 +785,19 @@ void reset_survivor_plab_arrays(); // Final (second) checkpoint work - void checkpointRootsFinalWork(bool asynch, bool clear_all_soft_refs, - bool init_mark_was_synchronous); + void checkpointRootsFinalWork(); // Work routine for parallel version of remark void do_remark_parallel(); // Work routine for non-parallel version of remark void do_remark_non_parallel(); // Reference processing work routine (during second checkpoint) - void refProcessingWork(bool asynch, bool clear_all_soft_refs); + void refProcessingWork(); // Concurrent sweeping work - void sweepWork(ConcurrentMarkSweepGeneration* gen, bool asynch); + void sweepWork(ConcurrentMarkSweepGeneration* gen); // (Concurrent) resetting of support data structures - void reset(bool asynch); + void reset(bool concurrent); // Clear _expansion_cause fields of constituent generations void clear_expansion_cause(); @@ -810,22 +806,10 @@ // used regions of each generation to limit the extent of sweep void save_sweep_limits(); - // A work method used by foreground collection to determine - // what type of collection (compacting or not, continuing or fresh) - // it should do. - void decide_foreground_collection_type(bool clear_all_soft_refs, - bool* should_compact, bool* should_start_over); - // A work method used by the foreground collector to do // a mark-sweep-compact. void do_compaction_work(bool clear_all_soft_refs); - // A work method used by the foreground collector to do - // a mark-sweep, after taking over from a possibly on-going - // concurrent mark-sweep collection. - void do_mark_sweep_work(bool clear_all_soft_refs, - CollectorState first_state, bool should_start_over); - // Work methods for reporting concurrent mode interruption or failure bool is_external_interruption(); void report_concurrent_mode_interruption(); @@ -868,15 +852,13 @@ // Locking checks NOT_PRODUCT(static bool have_cms_token();) - // XXXPERM bool should_collect(bool full, size_t size, bool tlab); bool shouldConcurrentCollect(); void collect(bool full, bool clear_all_soft_refs, size_t size, bool tlab); - void collect_in_background(bool clear_all_soft_refs, GCCause::Cause cause); - void collect_in_foreground(bool clear_all_soft_refs, GCCause::Cause cause); + void collect_in_background(GCCause::Cause cause); // In support of ExplicitGCInvokesConcurrent static void request_full_gc(unsigned int full_gc_count, GCCause::Cause cause); @@ -928,18 +910,16 @@ void directAllocated(HeapWord* start, size_t size); // Main CMS steps and related support - void checkpointRootsInitial(bool asynch); - bool markFromRoots(bool asynch); // a return value of false indicates failure - // due to stack overflow + void checkpointRootsInitial(); + bool markFromRoots(); // a return value of false indicates failure + // due to stack overflow void preclean(); - void checkpointRootsFinal(bool asynch, bool clear_all_soft_refs, - bool init_mark_was_synchronous); - void sweep(bool asynch); + void checkpointRootsFinal(); + void sweep(); // Check that the currently executing thread is the expected // one (foreground collector or background collector). static void check_correct_thread_executing() PRODUCT_RETURN; - // XXXPERM void print_statistics() PRODUCT_RETURN; bool is_cms_reachable(HeapWord* addr); @@ -1060,14 +1040,7 @@ // In support of MinChunkSize being larger than min object size const double _dilatation_factor; - enum CollectionTypes { - Concurrent_collection_type = 0, - MS_foreground_collection_type = 1, - MSC_foreground_collection_type = 2, - Unknown_collection_type = 3 - }; - - CollectionTypes _debug_collection_type; + bool _debug_concurrent_cycle; // True if a compacting collection was done. bool _did_compact; @@ -1152,7 +1125,7 @@ // hack to allow the collection of the younger gen first if the flag is // set. virtual bool full_collects_younger_generations() const { - return UseCMSCompactAtFullCollection && !ScavengeBeforeFullGC; + return !ScavengeBeforeFullGC; } void space_iterate(SpaceClosure* blk, bool usedOnly = false); @@ -1296,7 +1269,7 @@ // collection. void compute_new_size_free_list(); - CollectionTypes debug_collection_type() { return _debug_collection_type; } + bool debug_concurrent_cycle() { return _debug_concurrent_cycle; } void rotate_debug_collection_type(); }; @@ -1344,7 +1317,6 @@ CMSBitMap* _mut; OopTaskQueue* _work_queue; CMSMarkStack* _overflow_stack; - bool _yield; int _skip_bits; HeapWord* _finger; HeapWord* _threshold; @@ -1354,8 +1326,7 @@ MemRegion span, CMSBitMap* bit_map, OopTaskQueue* work_queue, - CMSMarkStack* overflow_stack, - bool should_yield); + CMSMarkStack* overflow_stack); bool do_bit(size_t offset); inline void do_yield_check();