328 // image.) Manipulated with CAS.
329 oop _overflow_list;
330 NOT_PRODUCT(ssize_t _num_par_pushes;)
331
332 // This closure is used by the reference processor to filter out
333 // references to live referent.
334 DefNewGeneration::IsAliveClosure _is_alive_closure;
335
336 // GC tracer that should be used during collection.
337 ParNewTracer _gc_tracer;
338
339 static oop real_forwardee_slow(oop obj);
340 static void waste_some_time();
341
342 // Preserve the mark of "obj", if necessary, in preparation for its mark
343 // word being overwritten with a self-forwarding-pointer.
344 void preserve_mark_if_necessary(oop obj, markOop m);
345
346 void handle_promotion_failed(GenCollectedHeap* gch, ParScanThreadStateSet& thread_state_set);
347
348 protected:
349
350 bool _survivor_overflow;
351
352 bool survivor_overflow() { return _survivor_overflow; }
353 void set_survivor_overflow(bool v) { _survivor_overflow = v; }
354
355 public:
356 ParNewGeneration(ReservedSpace rs, size_t initial_byte_size, int level);
357
358 ~ParNewGeneration() {
359 for (uint i = 0; i < ParallelGCThreads; i++)
360 delete _task_queues->queue(i);
361
362 delete _task_queues;
363 }
364
365 virtual void ref_processor_init();
366 virtual Generation::Name kind() { return Generation::ParNew; }
367 virtual const char* name() const;
368 virtual const char* short_name() const { return "ParNew"; }
369
370 // override
371 virtual bool refs_discovery_is_mt() const {
372 return ParallelGCThreads > 1;
373 }
374
|
328 // image.) Manipulated with CAS.
329 oop _overflow_list;
330 NOT_PRODUCT(ssize_t _num_par_pushes;)
331
332 // This closure is used by the reference processor to filter out
333 // references to live referent.
334 DefNewGeneration::IsAliveClosure _is_alive_closure;
335
336 // GC tracer that should be used during collection.
337 ParNewTracer _gc_tracer;
338
339 static oop real_forwardee_slow(oop obj);
340 static void waste_some_time();
341
342 // Preserve the mark of "obj", if necessary, in preparation for its mark
343 // word being overwritten with a self-forwarding-pointer.
344 void preserve_mark_if_necessary(oop obj, markOop m);
345
346 void handle_promotion_failed(GenCollectedHeap* gch, ParScanThreadStateSet& thread_state_set);
347
348 bool _survivor_overflow;
349
350 bool survivor_overflow() { return _survivor_overflow; }
351 void set_survivor_overflow(bool v) { _survivor_overflow = v; }
352
353 // true -> should automatically calculate ParGCCardsPerStrideChunk
354 // before each young GC
355 bool _should_adjust_cards_per_stride;
356
357 // automatically calculate ParGCCardsPerStrideChunk based on the old
358 // gen capacity before each young GC
359 void adjust_cards_per_stride(const Generation& old_gen);
360
361 public:
362 ParNewGeneration(ReservedSpace rs, size_t initial_byte_size, int level);
363
364 ~ParNewGeneration() {
365 for (uint i = 0; i < ParallelGCThreads; i++)
366 delete _task_queues->queue(i);
367
368 delete _task_queues;
369 }
370
371 virtual void ref_processor_init();
372 virtual Generation::Name kind() { return Generation::ParNew; }
373 virtual const char* name() const;
374 virtual const char* short_name() const { return "ParNew"; }
375
376 // override
377 virtual bool refs_discovery_is_mt() const {
378 return ParallelGCThreads > 1;
379 }
380
|