src/hotspot/share/gc/shared/preservedMarks.hpp
changeset 57777 90ead0febf56
parent 53244 9807daeb47c4
child 59053 ba6c248cae19
equal deleted inserted replaced
57774:21dccfac0ec5 57777:90ead0febf56
    33 class PreservedMarksSet;
    33 class PreservedMarksSet;
    34 class WorkGang;
    34 class WorkGang;
    35 
    35 
    36 class PreservedMarks {
    36 class PreservedMarks {
    37 private:
    37 private:
    38   class OopAndMarkOop {
    38   class OopAndMarkWord {
    39   private:
    39   private:
    40     oop _o;
    40     oop _o;
    41     markOop _m;
    41     markWord _m;
    42 
    42 
    43   public:
    43   public:
    44     OopAndMarkOop(oop obj, markOop m) : _o(obj), _m(m) { }
    44     OopAndMarkWord(oop obj, markWord m) : _o(obj), _m(m) { }
    45 
    45 
    46     oop get_oop() { return _o; }
    46     oop get_oop() { return _o; }
    47     inline void set_mark() const;
    47     inline void set_mark() const;
    48     void set_oop(oop obj) { _o = obj; }
    48     void set_oop(oop obj) { _o = obj; }
    49   };
    49   };
    50   typedef Stack<OopAndMarkOop, mtGC> OopAndMarkOopStack;
    50   typedef Stack<OopAndMarkWord, mtGC> OopAndMarkWordStack;
    51 
    51 
    52   OopAndMarkOopStack _stack;
    52   OopAndMarkWordStack _stack;
    53 
    53 
    54   inline bool should_preserve_mark(oop obj, markOop m) const;
    54   inline bool should_preserve_mark(oop obj, markWord m) const;
    55 
    55 
    56 public:
    56 public:
    57   size_t size() const { return _stack.size(); }
    57   size_t size() const { return _stack.size(); }
    58   inline void push(oop obj, markOop m);
    58   inline void push(oop obj, markWord m);
    59   inline void push_if_necessary(oop obj, markOop m);
    59   inline void push_if_necessary(oop obj, markWord m);
    60   // Iterate over the stack, restore all preserved marks, and
    60   // Iterate over the stack, restore all preserved marks, and
    61   // reclaim the memory taken up by the stack segments.
    61   // reclaim the memory taken up by the stack segments.
    62   void restore();
    62   void restore();
    63   // Iterate over the stack, adjust all preserved marks according
    63   // Iterate over the stack, adjust all preserved marks according
    64   // to their forwarding location stored in the mark.
    64   // to their forwarding location stored in the mark.