46 // several threads |
46 // several threads |
47 // - CardGeneration - abstract class adding offset array behavior |
47 // - CardGeneration - abstract class adding offset array behavior |
48 // - OneContigSpaceCardGeneration - abstract class holding a single |
48 // - OneContigSpaceCardGeneration - abstract class holding a single |
49 // contiguous space with card marking |
49 // contiguous space with card marking |
50 // - TenuredGeneration - tenured (old object) space (markSweepCompact) |
50 // - TenuredGeneration - tenured (old object) space (markSweepCompact) |
51 // - CompactingPermGenGen - reflective object area (klasses, methods, symbols, ...) |
|
52 // - ConcurrentMarkSweepGeneration - Mostly Concurrent Mark Sweep Generation |
51 // - ConcurrentMarkSweepGeneration - Mostly Concurrent Mark Sweep Generation |
53 // (Detlefs-Printezis refinement of |
52 // (Detlefs-Printezis refinement of |
54 // Boehm-Demers-Schenker) |
53 // Boehm-Demers-Schenker) |
55 // |
54 // |
56 // The system configurations currently allowed are: |
55 // The system configurations currently allowed are: |
57 // |
56 // |
58 // DefNewGeneration + TenuredGeneration + PermGeneration |
57 // DefNewGeneration + TenuredGeneration |
59 // DefNewGeneration + ConcurrentMarkSweepGeneration + ConcurrentMarkSweepPermGen |
58 // DefNewGeneration + ConcurrentMarkSweepGeneration |
60 // |
59 // |
61 // ParNewGeneration + TenuredGeneration + PermGeneration |
60 // ParNewGeneration + TenuredGeneration |
62 // ParNewGeneration + ConcurrentMarkSweepGeneration + ConcurrentMarkSweepPermGen |
61 // ParNewGeneration + ConcurrentMarkSweepGeneration |
63 // |
62 // |
64 |
63 |
65 class DefNewGeneration; |
64 class DefNewGeneration; |
66 class GenerationSpec; |
65 class GenerationSpec; |
67 class CompactibleSpace; |
66 class CompactibleSpace; |
440 virtual void update_gc_stats(int current_level, bool full) {} |
439 virtual void update_gc_stats(int current_level, bool full) {} |
441 |
440 |
442 // Mark sweep support phase2 |
441 // Mark sweep support phase2 |
443 virtual void prepare_for_compaction(CompactPoint* cp); |
442 virtual void prepare_for_compaction(CompactPoint* cp); |
444 // Mark sweep support phase3 |
443 // Mark sweep support phase3 |
445 virtual void pre_adjust_pointers() {ShouldNotReachHere();} |
|
446 virtual void adjust_pointers(); |
444 virtual void adjust_pointers(); |
447 // Mark sweep support phase4 |
445 // Mark sweep support phase4 |
448 virtual void compact(); |
446 virtual void compact(); |
449 virtual void post_compact() {ShouldNotReachHere();} |
447 virtual void post_compact() {ShouldNotReachHere();} |
450 |
448 |
536 |
534 |
537 // Iteration. |
535 // Iteration. |
538 |
536 |
539 // Iterate over all the ref-containing fields of all objects in the |
537 // Iterate over all the ref-containing fields of all objects in the |
540 // generation, calling "cl.do_oop" on each. |
538 // generation, calling "cl.do_oop" on each. |
541 virtual void oop_iterate(OopClosure* cl); |
539 virtual void oop_iterate(ExtendedOopClosure* cl); |
542 |
540 |
543 // Same as above, restricted to the intersection of a memory region and |
541 // Same as above, restricted to the intersection of a memory region and |
544 // the generation. |
542 // the generation. |
545 virtual void oop_iterate(MemRegion mr, OopClosure* cl); |
543 virtual void oop_iterate(MemRegion mr, ExtendedOopClosure* cl); |
546 |
544 |
547 // Iterate over all objects in the generation, calling "cl.do_object" on |
545 // Iterate over all objects in the generation, calling "cl.do_object" on |
548 // each. |
546 // each. |
549 virtual void object_iterate(ObjectClosure* cl); |
547 virtual void object_iterate(ObjectClosure* cl); |
550 |
548 |
664 // Garbage collection is performed using mark-compact. |
662 // Garbage collection is performed using mark-compact. |
665 |
663 |
666 class OneContigSpaceCardGeneration: public CardGeneration { |
664 class OneContigSpaceCardGeneration: public CardGeneration { |
667 friend class VMStructs; |
665 friend class VMStructs; |
668 // Abstractly, this is a subtype that gets access to protected fields. |
666 // Abstractly, this is a subtype that gets access to protected fields. |
669 friend class CompactingPermGen; |
|
670 friend class VM_PopulateDumpSharedSpace; |
667 friend class VM_PopulateDumpSharedSpace; |
671 |
668 |
672 protected: |
669 protected: |
673 size_t _min_heap_delta_bytes; // Minimum amount to expand. |
670 size_t _min_heap_delta_bytes; // Minimum amount to expand. |
674 ContiguousSpace* _the_space; // actual space holding objects |
671 ContiguousSpace* _the_space; // actual space holding objects |