src/share/vm/memory/generation.hpp

Print this page
rev 6796 : [mq]: templateOopIterate

*** 112,127 **** CollectorCounters* _gc_counters; // Statistics for garbage collection GCStats* _gc_stats; // Returns the next generation in the configuration, or else NULL if this // is the highest generation. Generation* next_gen() const; // Initialize the generation. ! Generation(ReservedSpace rs, size_t initial_byte_size, int level); // Apply "cl->do_oop" to (the address of) (exactly) all the ref fields in // "sp" that point into younger generations. // The iteration is only over objects allocated at the start of the // iterations; objects allocated as a result of applying the closure are --- 112,134 ---- CollectorCounters* _gc_counters; // Statistics for garbage collection GCStats* _gc_stats; + enum { + _dispatch_index_generation_cms, + _dispatch_index_generation_def_new, + _dispatch_index_generation_one_contig + }; + const jbyte _dispatch_index; + // Returns the next generation in the configuration, or else NULL if this // is the highest generation. Generation* next_gen() const; // Initialize the generation. ! Generation(ReservedSpace rs, size_t initial_byte_size, int level, jbyte dispatch_index); // Apply "cl->do_oop" to (the address of) (exactly) all the ref fields in // "sp" that point into younger generations. // The iteration is only over objects allocated at the start of the // iterations; objects allocated as a result of applying the closure are
*** 477,504 **** // This function is "true" iff any no allocations have occurred in the // generation since the last call to "save_marks". virtual bool no_allocs_since_save_marks() = 0; - // Apply "cl->apply" to (the addresses of) all reference fields in objects - // allocated in the current generation since the last call to "save_marks". - // If more objects are allocated in this generation as a result of applying - // the closure, iterates over reference fields in those objects as well. - // Calls "save_marks" at the end of the iteration. - // General signature... - virtual void oop_since_save_marks_iterate_v(OopsInGenClosure* cl) = 0; // ...and specializations for de-virtualization. (The general // implementation of the _nv versions call the virtual version. // Note that the _nv suffix is not really semantically necessary, // but it avoids some not-so-useful warnings on Solaris.) ! #define Generation_SINCE_SAVE_MARKS_DECL(OopClosureType, nv_suffix) \ ! virtual void oop_since_save_marks_iterate##nv_suffix(OopClosureType* cl) { \ ! oop_since_save_marks_iterate_v((OopsInGenClosure*)cl); \ ! } ! SPECIALIZED_SINCE_SAVE_MARKS_CLOSURES(Generation_SINCE_SAVE_MARKS_DECL) ! #undef Generation_SINCE_SAVE_MARKS_DECL // The "requestor" generation is performing some garbage collection // action for which it would be useful to have scratch space. If // the target is not the requestor, no gc actions will be required // of the target. The requestor promises to allocate no more than --- 484,502 ---- // This function is "true" iff any no allocations have occurred in the // generation since the last call to "save_marks". virtual bool no_allocs_since_save_marks() = 0; // ...and specializations for de-virtualization. (The general // implementation of the _nv versions call the virtual version. // Note that the _nv suffix is not really semantically necessary, // but it avoids some not-so-useful warnings on Solaris.) ! template <typename OopClosureType> ! void oop_since_save_marks_iterate(OopClosureType* cl); ! template <bool nv, typename OopClosureType> ! void oop_since_save_marks_iterate_disp(OopClosureType* cl); // The "requestor" generation is performing some garbage collection // action for which it would be useful to have scratch space. If // the target is not the requestor, no gc actions will be required // of the target. The requestor promises to allocate no more than
*** 637,647 **** // to control growing/shrinking policy in spite of promotions. size_t _capacity_at_prologue; size_t _used_at_prologue; CardGeneration(ReservedSpace rs, size_t initial_byte_size, int level, ! GenRemSet* remset); public: // Attempt to expand the generation by "bytes". Expand by at a // minimum "expand_bytes". Return true if some amount (not --- 635,645 ---- // to control growing/shrinking policy in spite of promotions. size_t _capacity_at_prologue; size_t _used_at_prologue; CardGeneration(ReservedSpace rs, size_t initial_byte_size, int level, ! GenRemSet* remset, jbyte dispatch_index); public: // Attempt to expand the generation by "bytes". Expand by at a // minimum "expand_bytes". Return true if some amount (not
*** 696,706 **** public: OneContigSpaceCardGeneration(ReservedSpace rs, size_t initial_byte_size, int level, GenRemSet* remset, ContiguousSpace* space) : ! CardGeneration(rs, initial_byte_size, level, remset), _the_space(space) {} inline bool is_in(const void* p) const; --- 694,704 ---- public: OneContigSpaceCardGeneration(ReservedSpace rs, size_t initial_byte_size, int level, GenRemSet* remset, ContiguousSpace* space) : ! CardGeneration(rs, initial_byte_size, level, remset, _dispatch_index_generation_one_contig), _the_space(space) {} inline bool is_in(const void* p) const;
*** 727,740 **** // Accessing marks inline WaterMark top_mark(); inline WaterMark bottom_mark(); ! #define OneContig_SINCE_SAVE_MARKS_DECL(OopClosureType, nv_suffix) \ ! void oop_since_save_marks_iterate##nv_suffix(OopClosureType* cl); ! OneContig_SINCE_SAVE_MARKS_DECL(OopsInGenClosure,_v) ! SPECIALIZED_SINCE_SAVE_MARKS_CLOSURES(OneContig_SINCE_SAVE_MARKS_DECL) void save_marks(); void reset_saved_marks(); bool no_allocs_since_save_marks(); --- 725,736 ---- // Accessing marks inline WaterMark top_mark(); inline WaterMark bottom_mark(); ! template <bool nv, typename OopClosureType> ! void oop_since_save_marks_iterate(OopClosureType* cl); void save_marks(); void reset_saved_marks(); bool no_allocs_since_save_marks();