< prev index next >

src/hotspot/share/gc/shared/preservedMarks.hpp

Print this page




  16  * 2 along with this work; if not, write to the Free Software Foundation,
  17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  18  *
  19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  20  * or visit www.oracle.com if you need additional information or have any
  21  * questions.
  22  *
  23  */
  24 
  25 #ifndef SHARE_VM_GC_SHARED_PRESERVEDMARKS_HPP
  26 #define SHARE_VM_GC_SHARED_PRESERVEDMARKS_HPP
  27 
  28 #include "memory/allocation.hpp"
  29 #include "memory/padded.hpp"
  30 #include "oops/oop.hpp"
  31 #include "utilities/stack.hpp"
  32 
  33 class PreservedMarksSet;
  34 class WorkGang;
  35 
  36 class PreservedMarks VALUE_OBJ_CLASS_SPEC {
  37 private:
  38   class OopAndMarkOop VALUE_OBJ_CLASS_SPEC {
  39   private:
  40     oop _o;
  41     markOop _m;
  42 
  43   public:
  44     OopAndMarkOop(oop obj, markOop m) : _o(obj), _m(m) { }
  45 
  46     oop get_oop() { return _o; }
  47     void set_mark() const { _o->set_mark(_m); }
  48     void set_oop(oop obj) { _o = obj; }
  49   };
  50   typedef Stack<OopAndMarkOop, mtGC> OopAndMarkOopStack;
  51 
  52   OopAndMarkOopStack _stack;
  53 
  54   inline bool should_preserve_mark(oop obj, markOop m) const;
  55 
  56 public:
  57   size_t size() const { return _stack.size(); }
  58   inline void push(oop obj, markOop m);




  16  * 2 along with this work; if not, write to the Free Software Foundation,
  17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  18  *
  19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  20  * or visit www.oracle.com if you need additional information or have any
  21  * questions.
  22  *
  23  */
  24 
  25 #ifndef SHARE_VM_GC_SHARED_PRESERVEDMARKS_HPP
  26 #define SHARE_VM_GC_SHARED_PRESERVEDMARKS_HPP
  27 
  28 #include "memory/allocation.hpp"
  29 #include "memory/padded.hpp"
  30 #include "oops/oop.hpp"
  31 #include "utilities/stack.hpp"
  32 
  33 class PreservedMarksSet;
  34 class WorkGang;
  35 
  36 class PreservedMarks {
  37 private:
  38   class OopAndMarkOop {
  39   private:
  40     oop _o;
  41     markOop _m;
  42 
  43   public:
  44     OopAndMarkOop(oop obj, markOop m) : _o(obj), _m(m) { }
  45 
  46     oop get_oop() { return _o; }
  47     void set_mark() const { _o->set_mark(_m); }
  48     void set_oop(oop obj) { _o = obj; }
  49   };
  50   typedef Stack<OopAndMarkOop, mtGC> OopAndMarkOopStack;
  51 
  52   OopAndMarkOopStack _stack;
  53 
  54   inline bool should_preserve_mark(oop obj, markOop m) const;
  55 
  56 public:
  57   size_t size() const { return _stack.size(); }
  58   inline void push(oop obj, markOop m);


< prev index next >