23 */ |
23 */ |
24 |
24 |
25 #ifndef SHARE_VM_OOPS_OOP_HPP |
25 #ifndef SHARE_VM_OOPS_OOP_HPP |
26 #define SHARE_VM_OOPS_OOP_HPP |
26 #define SHARE_VM_OOPS_OOP_HPP |
27 |
27 |
28 #include "gc/shared/specialized_oop_closures.hpp" |
|
29 #include "memory/iterator.hpp" |
28 #include "memory/iterator.hpp" |
30 #include "memory/memRegion.hpp" |
29 #include "memory/memRegion.hpp" |
31 #include "oops/access.hpp" |
30 #include "oops/access.hpp" |
32 #include "oops/metadata.hpp" |
31 #include "oops/metadata.hpp" |
33 #include "runtime/atomic.hpp" |
32 #include "runtime/atomic.hpp" |
286 inline void pc_update_contents(ParCompactionManager* cm); |
285 inline void pc_update_contents(ParCompactionManager* cm); |
287 // Parallel Scavenge |
286 // Parallel Scavenge |
288 inline void ps_push_contents(PSPromotionManager* pm); |
287 inline void ps_push_contents(PSPromotionManager* pm); |
289 #endif |
288 #endif |
290 |
289 |
291 |
290 template <typename OopClosureType> |
292 // iterators, returns size of object |
291 inline void oop_iterate(OopClosureType* cl); |
293 #define OOP_ITERATE_DECL(OopClosureType, nv_suffix) \ |
292 |
294 inline void oop_iterate(OopClosureType* blk); \ |
293 template <typename OopClosureType> |
295 inline void oop_iterate(OopClosureType* blk, MemRegion mr); // Only in mr. |
294 inline void oop_iterate(OopClosureType* cl, MemRegion mr); |
296 |
295 |
297 ALL_OOP_OOP_ITERATE_CLOSURES_1(OOP_ITERATE_DECL) |
296 template <typename OopClosureType> |
298 ALL_OOP_OOP_ITERATE_CLOSURES_2(OOP_ITERATE_DECL) |
297 inline int oop_iterate_size(OopClosureType* cl); |
299 |
298 |
300 #define OOP_ITERATE_SIZE_DECL(OopClosureType, nv_suffix) \ |
299 template <typename OopClosureType> |
301 inline int oop_iterate_size(OopClosureType* blk); \ |
300 inline int oop_iterate_size(OopClosureType* cl, MemRegion mr); |
302 inline int oop_iterate_size(OopClosureType* blk, MemRegion mr); // Only in mr. |
301 |
303 |
302 template <typename OopClosureType> |
304 ALL_OOP_OOP_ITERATE_CLOSURES_1(OOP_ITERATE_SIZE_DECL) |
303 inline void oop_iterate_backwards(OopClosureType* cl); |
305 ALL_OOP_OOP_ITERATE_CLOSURES_2(OOP_ITERATE_SIZE_DECL) |
|
306 |
|
307 |
|
308 #if INCLUDE_OOP_OOP_ITERATE_BACKWARDS |
|
309 |
|
310 #define OOP_ITERATE_BACKWARDS_DECL(OopClosureType, nv_suffix) \ |
|
311 inline void oop_iterate_backwards(OopClosureType* blk); |
|
312 |
|
313 ALL_OOP_OOP_ITERATE_CLOSURES_1(OOP_ITERATE_BACKWARDS_DECL) |
|
314 ALL_OOP_OOP_ITERATE_CLOSURES_2(OOP_ITERATE_BACKWARDS_DECL) |
|
315 |
|
316 #endif // INCLUDE_OOP_OOP_ITERATE_BACKWARDS |
|
317 |
304 |
318 inline int oop_iterate_no_header(OopClosure* bk); |
305 inline int oop_iterate_no_header(OopClosure* bk); |
319 inline int oop_iterate_no_header(OopClosure* bk, MemRegion mr); |
306 inline int oop_iterate_no_header(OopClosure* bk, MemRegion mr); |
320 |
307 |
321 inline static bool is_instanceof_or_null(oop obj, Klass* klass); |
308 inline static bool is_instanceof_or_null(oop obj, Klass* klass); |