< prev index next >

src/hotspot/share/prims/jvmtiTagMap.cpp

Print this page




1695     o->set_mark(mark);
1696   }
1697 
1698   if (UseBiasedLocking) {
1699     BiasedLocking::restore_marks();
1700   }
1701 
1702   // free the stacks
1703   delete _saved_oop_stack;
1704   delete _saved_mark_stack;
1705 }
1706 
1707 // mark an object
1708 inline void ObjectMarker::mark(oop o) {
1709   assert(Universe::heap()->is_in(o), "sanity check");
1710   assert(!o->mark().is_marked(), "should only mark an object once");
1711 
1712   // object's mark word
1713   markWord mark = o->mark();
1714 
1715   if (mark.must_be_preserved(o)) {
1716     _saved_mark_stack->push(mark);
1717     _saved_oop_stack->push(o);
1718   }
1719 
1720   // mark the object
1721   o->set_mark(markWord::prototype().set_marked());
1722 }
1723 
1724 // return true if object is marked
1725 inline bool ObjectMarker::visited(oop o) {
1726   return o->mark().is_marked();
1727 }
1728 
1729 // Stack allocated class to help ensure that ObjectMarker is used
1730 // correctly. Constructor initializes ObjectMarker, destructor calls
1731 // ObjectMarker's done() function to restore object headers.
1732 class ObjectMarkerController : public StackObj {
1733  public:
1734   ObjectMarkerController() {
1735     ObjectMarker::init();




1695     o->set_mark(mark);
1696   }
1697 
1698   if (UseBiasedLocking) {
1699     BiasedLocking::restore_marks();
1700   }
1701 
1702   // free the stacks
1703   delete _saved_oop_stack;
1704   delete _saved_mark_stack;
1705 }
1706 
1707 // mark an object
1708 inline void ObjectMarker::mark(oop o) {
1709   assert(Universe::heap()->is_in(o), "sanity check");
1710   assert(!o->mark().is_marked(), "should only mark an object once");
1711 
1712   // object's mark word
1713   markWord mark = o->mark();
1714 
1715   if (o->mark_must_be_preserved(mark)) {
1716     _saved_mark_stack->push(mark);
1717     _saved_oop_stack->push(o);
1718   }
1719 
1720   // mark the object
1721   o->set_mark(markWord::prototype().set_marked());
1722 }
1723 
1724 // return true if object is marked
1725 inline bool ObjectMarker::visited(oop o) {
1726   return o->mark().is_marked();
1727 }
1728 
1729 // Stack allocated class to help ensure that ObjectMarker is used
1730 // correctly. Constructor initializes ObjectMarker, destructor calls
1731 // ObjectMarker's done() function to restore object headers.
1732 class ObjectMarkerController : public StackObj {
1733  public:
1734   ObjectMarkerController() {
1735     ObjectMarker::init();


< prev index next >