878 // in the space (i.e., between bottom and top) when at a safepoint. |
878 // in the space (i.e., between bottom and top) when at a safepoint. |
879 void safe_object_iterate(ObjectClosure* blk); |
879 void safe_object_iterate(ObjectClosure* blk); |
880 void object_iterate_mem(MemRegion mr, UpwardsObjectClosure* cl); |
880 void object_iterate_mem(MemRegion mr, UpwardsObjectClosure* cl); |
881 // iterates on objects up to the safe limit |
881 // iterates on objects up to the safe limit |
882 HeapWord* object_iterate_careful(ObjectClosureCareful* cl); |
882 HeapWord* object_iterate_careful(ObjectClosureCareful* cl); |
883 inline HeapWord* concurrent_iteration_safe_limit(); |
883 HeapWord* concurrent_iteration_safe_limit() { |
|
884 assert(_concurrent_iteration_safe_limit <= top(), |
|
885 "_concurrent_iteration_safe_limit update missed"); |
|
886 return _concurrent_iteration_safe_limit; |
|
887 } |
884 // changes the safe limit, all objects from bottom() to the new |
888 // changes the safe limit, all objects from bottom() to the new |
885 // limit should be properly initialized |
889 // limit should be properly initialized |
886 inline void set_concurrent_iteration_safe_limit(HeapWord* new_limit); |
890 void set_concurrent_iteration_safe_limit(HeapWord* new_limit) { |
|
891 assert(new_limit <= top(), "uninitialized objects in the safe range"); |
|
892 _concurrent_iteration_safe_limit = new_limit; |
|
893 } |
887 |
894 |
888 #ifndef SERIALGC |
895 #ifndef SERIALGC |
889 // In support of parallel oop_iterate. |
896 // In support of parallel oop_iterate. |
890 #define ContigSpace_PAR_OOP_ITERATE_DECL(OopClosureType, nv_suffix) \ |
897 #define ContigSpace_PAR_OOP_ITERATE_DECL(OopClosureType, nv_suffix) \ |
891 void par_oop_iterate(MemRegion mr, OopClosureType* blk); |
898 void par_oop_iterate(MemRegion mr, OopClosureType* blk); |