< prev index next >

src/share/vm/oops/oop.inline.hpp

Print this page
rev 13365 : [mq]: review_update_1


 573   return mark()->is_marked();
 574 }
 575 
 576 bool oopDesc::is_scavengable() const {
 577   return Universe::heap()->is_scavengable(this);
 578 }
 579 
 580 // Used by scavengers
 581 bool oopDesc::is_forwarded() const {
 582   // The extra heap check is needed since the obj might be locked, in which case the
 583   // mark would point to a stack location and have the sentinel bit cleared
 584   return mark()->is_marked();
 585 }
 586 
 587 // Used by scavengers
 588 void oopDesc::forward_to(oop p) {
 589   assert(check_obj_alignment(p),
 590          "forwarding to something not aligned");
 591   assert(Universe::heap()->is_in_reserved(p),
 592          "forwarding to something not in heap");



 593   markOop m = markOopDesc::encode_pointer_as_mark(p);
 594   assert(m->decode_pointer() == p, "encoding must be reversable");
 595   set_mark(m);
 596 }
 597 
 598 // Used by parallel scavengers
 599 bool oopDesc::cas_forward_to(oop p, markOop compare) {
 600   assert(check_obj_alignment(p),
 601          "forwarding to something not aligned");
 602   assert(Universe::heap()->is_in_reserved(p),
 603          "forwarding to something not in heap");
 604   markOop m = markOopDesc::encode_pointer_as_mark(p);
 605   assert(m->decode_pointer() == p, "encoding must be reversable");
 606   return cas_set_mark(m, compare) == compare;
 607 }
 608 
 609 #if INCLUDE_ALL_GCS
 610 oop oopDesc::forward_to_atomic(oop p) {
 611   markOop oldMark = mark();
 612   markOop forwardPtrMark = markOopDesc::encode_pointer_as_mark(p);




 573   return mark()->is_marked();
 574 }
 575 
 576 bool oopDesc::is_scavengable() const {
 577   return Universe::heap()->is_scavengable(this);
 578 }
 579 
 580 // Used by scavengers
 581 bool oopDesc::is_forwarded() const {
 582   // The extra heap check is needed since the obj might be locked, in which case the
 583   // mark would point to a stack location and have the sentinel bit cleared
 584   return mark()->is_marked();
 585 }
 586 
 587 // Used by scavengers
 588 void oopDesc::forward_to(oop p) {
 589   assert(check_obj_alignment(p),
 590          "forwarding to something not aligned");
 591   assert(Universe::heap()->is_in_reserved(p),
 592          "forwarding to something not in heap");
 593   assert(!is_archive_object(oop(this)) &&
 594          !is_archive_object(p),
 595          "forwarding archive object");
 596   markOop m = markOopDesc::encode_pointer_as_mark(p);
 597   assert(m->decode_pointer() == p, "encoding must be reversable");
 598   set_mark(m);
 599 }
 600 
 601 // Used by parallel scavengers
 602 bool oopDesc::cas_forward_to(oop p, markOop compare) {
 603   assert(check_obj_alignment(p),
 604          "forwarding to something not aligned");
 605   assert(Universe::heap()->is_in_reserved(p),
 606          "forwarding to something not in heap");
 607   markOop m = markOopDesc::encode_pointer_as_mark(p);
 608   assert(m->decode_pointer() == p, "encoding must be reversable");
 609   return cas_set_mark(m, compare) == compare;
 610 }
 611 
 612 #if INCLUDE_ALL_GCS
 613 oop oopDesc::forward_to_atomic(oop p) {
 614   markOop oldMark = mark();
 615   markOop forwardPtrMark = markOopDesc::encode_pointer_as_mark(p);


< prev index next >