@@ -283,37 +283,30 @@ class ScavengeRootsTask : public WorkerTask {
283283 PSOldGen* _old_gen;
284284 HeapWord* _gen_top;
285285 uint _active_workers;
286- bool _is_empty ;
286+ bool _is_old_gen_empty ;
287287 TaskTerminator _terminator;
288288
289289public:
290290 ScavengeRootsTask (PSOldGen* old_gen,
291- HeapWord* gen_top,
292- uint active_workers,
293- bool is_empty) :
291+ uint active_workers) :
294292 WorkerTask (" ScavengeRootsTask" ),
295293 _strong_roots_scope (active_workers),
296294 _subtasks (ParallelRootType::sentinel),
297295 _old_gen (old_gen),
298- _gen_top (gen_top ),
296+ _gen_top (old_gen-> object_space ()->top() ),
299297 _active_workers(active_workers),
300- _is_empty ( is_empty),
298+ _is_old_gen_empty(old_gen-> object_space ()-> is_empty() ),
301299 _terminator(active_workers, PSPromotionManager::vm_thread_promotion_manager()->stack_array_depth()) {
300+ assert (_old_gen != NULL , " Sanity" );
302301 }
303302
304303 virtual void work (uint worker_id) {
304+ assert (worker_id < _active_workers, " Sanity" );
305305 ResourceMark rm;
306306
307- if (!_is_empty ) {
307+ if (!_is_old_gen_empty ) {
308308 // There are only old-to-young pointers if there are objects
309309 // in the old gen.
310-
311- assert (_old_gen != NULL , " Sanity" );
312- // There are no old-to-young pointers if the old gen is empty.
313- assert (!_old_gen->object_space ()->is_empty (), " Should not be called is there is no work" );
314- assert (_old_gen->object_space ()->contains (_gen_top) || _gen_top == _old_gen->object_space ()->top (), " Sanity" );
315- assert (worker_id < ParallelGCThreads, " Sanity" );
316-
317310 {
318311 PSPromotionManager* pm = PSPromotionManager::gc_thread_promotion_manager (worker_id);
319312 PSCardTable* card_table = ParallelScavengeHeap::heap ()->card_table ();
@@ -453,12 +446,6 @@ bool PSScavenge::invoke_no_policy() {
453446 // Reset our survivor overflow.
454447 set_survivor_overflow (false );
455448
456- // We need to save the old top values before
457- // creating the promotion_manager. We pass the top
458- // values to the card_table, to prevent it from
459- // straying into the promotion labs.
460- HeapWord* old_top = old_gen->object_space ()->top ();
461-
462449 const uint active_workers =
463450 WorkerPolicy::calc_active_workers (ParallelScavengeHeap::heap ()->workers ().max_workers (),
464451 ParallelScavengeHeap::heap ()->workers ().active_workers (),
@@ -472,7 +459,7 @@ bool PSScavenge::invoke_no_policy() {
472459 {
473460 GCTraceTime (Debug, gc, phases) tm (" Scavenge" , &_gc_timer);
474461
475- ScavengeRootsTask task (old_gen, old_top, active_workers, old_gen-> object_space ()-> is_empty () );
462+ ScavengeRootsTask task (old_gen, active_workers);
476463 ParallelScavengeHeap::heap ()->workers ().run_task (&task);
477464 }
478465
0 commit comments