281 char* print_value_string(); 282 283 // verification operations 284 void verify_on(outputStream* st); 285 void verify(); 286 287 // locking operations 288 bool is_locked() const; 289 bool is_unlocked() const; 290 bool has_bias_pattern() const; 291 292 // asserts 293 bool is_oop(bool ignore_mark_word = false) const; 294 bool is_oop_or_null(bool ignore_mark_word = false) const; 295 #ifndef PRODUCT 296 bool is_unlocked_oop() const; 297 #endif 298 299 // garbage collection 300 bool is_gc_marked() const; 301 // Apply "MarkSweep::mark_and_push" to (the address of) every non-NULL 302 // reference field in "this". 303 void follow_contents(void); 304 305 #if INCLUDE_ALL_GCS 306 // Parallel Scavenge 307 void push_contents(PSPromotionManager* pm); 308 309 // Parallel Old 310 void update_contents(ParCompactionManager* cm); 311 312 void follow_contents(ParCompactionManager* cm); 313 #endif // INCLUDE_ALL_GCS 314 315 bool is_scavengable() const; 316 317 // Forward pointer operations for scavenge 318 bool is_forwarded() const; 319 320 void forward_to(oop p); 321 bool cas_forward_to(oop p, markOop compare); 322 323 #if INCLUDE_ALL_GCS 324 // Like "forward_to", but inserts the forwarding pointer atomically. 325 // Exactly one thread succeeds in inserting the forwarding pointer, and 326 // this call returns "NULL" for that thread; any other thread has the 327 // value of the forwarding pointer returned and does not modify "this". 328 oop forward_to_atomic(oop p); 329 #endif // INCLUDE_ALL_GCS 330 331 oop forwardee() const; 332 333 // Age of object during scavenge 334 uint age() const; 335 void incr_age(); 336 337 // Adjust all pointers in this object to point at it's forwarded location and 338 // return the size of this oop. This is used by the MarkSweep collector. 339 int adjust_pointers(); 340 341 // mark-sweep support 342 void follow_body(int begin, int end); 343 344 // Fast access to barrier set 345 static BarrierSet* bs() { return _bs; } 346 static void set_bs(BarrierSet* bs) { _bs = bs; } 347 348 // iterators, returns size of object 349 #define OOP_ITERATE_DECL(OopClosureType, nv_suffix) \ 350 int oop_iterate(OopClosureType* blk); \ 351 int oop_iterate(OopClosureType* blk, MemRegion mr); // Only in mr. 352 353 ALL_OOP_OOP_ITERATE_CLOSURES_1(OOP_ITERATE_DECL) 354 ALL_OOP_OOP_ITERATE_CLOSURES_2(OOP_ITERATE_DECL) 355 356 #if INCLUDE_ALL_GCS 357 358 #define OOP_ITERATE_BACKWARDS_DECL(OopClosureType, nv_suffix) \ 359 int oop_iterate_backwards(OopClosureType* blk); 360 361 ALL_OOP_OOP_ITERATE_CLOSURES_1(OOP_ITERATE_BACKWARDS_DECL) 362 ALL_OOP_OOP_ITERATE_CLOSURES_2(OOP_ITERATE_BACKWARDS_DECL) 363 #endif 364 365 int oop_iterate_no_header(OopClosure* bk); 366 int oop_iterate_no_header(OopClosure* bk, MemRegion mr); | 281 char* print_value_string(); 282 283 // verification operations 284 void verify_on(outputStream* st); 285 void verify(); 286 287 // locking operations 288 bool is_locked() const; 289 bool is_unlocked() const; 290 bool has_bias_pattern() const; 291 292 // asserts 293 bool is_oop(bool ignore_mark_word = false) const; 294 bool is_oop_or_null(bool ignore_mark_word = false) const; 295 #ifndef PRODUCT 296 bool is_unlocked_oop() const; 297 #endif 298 299 // garbage collection 300 bool is_gc_marked() const; 301 302 bool is_scavengable() const; 303 304 // Forward pointer operations for scavenge 305 bool is_forwarded() const; 306 307 void forward_to(oop p); 308 bool cas_forward_to(oop p, markOop compare); 309 310 #if INCLUDE_ALL_GCS 311 // Like "forward_to", but inserts the forwarding pointer atomically. 312 // Exactly one thread succeeds in inserting the forwarding pointer, and 313 // this call returns "NULL" for that thread; any other thread has the 314 // value of the forwarding pointer returned and does not modify "this". 315 oop forward_to_atomic(oop p); 316 #endif // INCLUDE_ALL_GCS 317 318 oop forwardee() const; 319 320 // Age of object during scavenge 321 uint age() const; 322 void incr_age(); 323 324 325 // mark-sweep support 326 void follow_body(int begin, int end); 327 328 // Fast access to barrier set 329 static BarrierSet* bs() { return _bs; } 330 static void set_bs(BarrierSet* bs) { _bs = bs; } 331 332 // Garbage Collection support 333 334 // Mark Sweep 335 void ms_follow_contents(); 336 // Adjust all pointers in this object to point at it's forwarded location and 337 // return the size of this oop. This is used by the MarkSweep collector. 338 int ms_adjust_pointers(); 339 #if INCLUDE_ALL_GCS 340 // Parallel Compact 341 void pc_follow_contents(ParCompactionManager* pc); 342 void pc_update_contents(); 343 // Parallel Scavenge 344 void ps_push_contents(PSPromotionManager* pm); 345 #endif 346 347 348 // iterators, returns size of object 349 #define OOP_ITERATE_DECL(OopClosureType, nv_suffix) \ 350 int oop_iterate(OopClosureType* blk); \ 351 int oop_iterate(OopClosureType* blk, MemRegion mr); // Only in mr. 352 353 ALL_OOP_OOP_ITERATE_CLOSURES_1(OOP_ITERATE_DECL) 354 ALL_OOP_OOP_ITERATE_CLOSURES_2(OOP_ITERATE_DECL) 355 356 #if INCLUDE_ALL_GCS 357 358 #define OOP_ITERATE_BACKWARDS_DECL(OopClosureType, nv_suffix) \ 359 int oop_iterate_backwards(OopClosureType* blk); 360 361 ALL_OOP_OOP_ITERATE_CLOSURES_1(OOP_ITERATE_BACKWARDS_DECL) 362 ALL_OOP_OOP_ITERATE_CLOSURES_2(OOP_ITERATE_BACKWARDS_DECL) 363 #endif 364 365 int oop_iterate_no_header(OopClosure* bk); 366 int oop_iterate_no_header(OopClosure* bk, MemRegion mr); |