256 static bool is_oop(oop obj, bool ignore_mark_word = false);
257 static bool is_oop_or_null(oop obj, bool ignore_mark_word = false);
258 #ifndef PRODUCT
259 inline bool is_unlocked_oop() const;
260 static bool is_archived_object(oop p) NOT_CDS_JAVA_HEAP_RETURN_(false);
261 #endif
262
263 // garbage collection
264 inline bool is_gc_marked() const;
265
266 // Forward pointer operations for scavenge
267 inline bool is_forwarded() const;
268
269 inline void forward_to(oop p);
270 inline bool cas_forward_to(oop p, markOop compare, atomic_memory_order order = memory_order_conservative);
271
272 // Like "forward_to", but inserts the forwarding pointer atomically.
273 // Exactly one thread succeeds in inserting the forwarding pointer, and
274 // this call returns "NULL" for that thread; any other thread has the
275 // value of the forwarding pointer returned and does not modify "this".
276 inline oop forward_to_atomic(oop p, atomic_memory_order order = memory_order_conservative);
277
278 inline oop forwardee() const;
279 inline oop forwardee_acquire() const;
280
281 // Age of object during scavenge
282 inline uint age() const;
283 inline void incr_age();
284
285 // mark-sweep support
286 void follow_body(int begin, int end);
287
288 template <typename OopClosureType>
289 inline void oop_iterate(OopClosureType* cl);
290
291 template <typename OopClosureType>
292 inline void oop_iterate(OopClosureType* cl, MemRegion mr);
293
294 template <typename OopClosureType>
295 inline int oop_iterate_size(OopClosureType* cl);
296
|
256 static bool is_oop(oop obj, bool ignore_mark_word = false);
257 static bool is_oop_or_null(oop obj, bool ignore_mark_word = false);
258 #ifndef PRODUCT
259 inline bool is_unlocked_oop() const;
260 static bool is_archived_object(oop p) NOT_CDS_JAVA_HEAP_RETURN_(false);
261 #endif
262
263 // garbage collection
264 inline bool is_gc_marked() const;
265
266 // Forward pointer operations for scavenge
267 inline bool is_forwarded() const;
268
269 inline void forward_to(oop p);
270 inline bool cas_forward_to(oop p, markOop compare, atomic_memory_order order = memory_order_conservative);
271
272 // Like "forward_to", but inserts the forwarding pointer atomically.
273 // Exactly one thread succeeds in inserting the forwarding pointer, and
274 // this call returns "NULL" for that thread; any other thread has the
275 // value of the forwarding pointer returned and does not modify "this".
276 inline oop forward_to_atomic(oop p, markOop compare, atomic_memory_order order = memory_order_conservative);
277
278 inline oop forwardee() const;
279 inline oop forwardee_acquire() const;
280
281 // Age of object during scavenge
282 inline uint age() const;
283 inline void incr_age();
284
285 // mark-sweep support
286 void follow_body(int begin, int end);
287
288 template <typename OopClosureType>
289 inline void oop_iterate(OopClosureType* cl);
290
291 template <typename OopClosureType>
292 inline void oop_iterate(OopClosureType* cl, MemRegion mr);
293
294 template <typename OopClosureType>
295 inline int oop_iterate_size(OopClosureType* cl);
296
|