< prev index next >

src/hotspot/share/gc/z/zMarkStack.hpp

Print this page

 45   bool push(T value);
 46   bool pop(T& value);
 47 
 48   ZStack<T, S>* next() const;
 49   ZStack<T, S>** next_addr();
 50 };
 51 
 52 template <typename T>
 53 class ZStackList {
 54 private:
 55   T* volatile _head;
 56 
 57   T* encode_versioned_pointer(const T* stack, uint32_t version) const;
 58   void decode_versioned_pointer(const T* vstack, T** stack, uint32_t* version) const;
 59 
 60 public:
 61   ZStackList();
 62 
 63   bool is_empty() const;
 64 
 65   void push_atomic(T* stack);
 66   T* pop_atomic();
 67 };
 68 
 69 typedef ZStack<ZMarkStackEntry, ZMarkStackSlots>     ZMarkStack;
 70 typedef ZStackList<ZMarkStack>                       ZMarkStackList;
 71 typedef ZStack<ZMarkStack*, ZMarkStackMagazineSlots> ZMarkStackMagazine;
 72 typedef ZStackList<ZMarkStackMagazine>               ZMarkStackMagazineList;
 73 
 74 class ZMarkStripe {
 75 private:
 76   ZCACHE_ALIGNED ZMarkStackList _published;
 77   ZCACHE_ALIGNED ZMarkStackList _overflowed;
 78 
 79 public:
 80   ZMarkStripe();
 81 
 82   bool is_empty() const;
 83 
 84   void publish_stack(ZMarkStack* stack, bool publish = true);
 85   ZMarkStack* steal_stack();
 86 };

 45   bool push(T value);
 46   bool pop(T& value);
 47 
 48   ZStack<T, S>* next() const;
 49   ZStack<T, S>** next_addr();
 50 };
 51 
 52 template <typename T>
 53 class ZStackList {
 54 private:
 55   T* volatile _head;
 56 
 57   T* encode_versioned_pointer(const T* stack, uint32_t version) const;
 58   void decode_versioned_pointer(const T* vstack, T** stack, uint32_t* version) const;
 59 
 60 public:
 61   ZStackList();
 62 
 63   bool is_empty() const;
 64 
 65   void push(T* stack);
 66   T* pop();
 67 };
 68 
 69 typedef ZStack<ZMarkStackEntry, ZMarkStackSlots>     ZMarkStack;
 70 typedef ZStackList<ZMarkStack>                       ZMarkStackList;
 71 typedef ZStack<ZMarkStack*, ZMarkStackMagazineSlots> ZMarkStackMagazine;
 72 typedef ZStackList<ZMarkStackMagazine>               ZMarkStackMagazineList;
 73 
 74 class ZMarkStripe {
 75 private:
 76   ZCACHE_ALIGNED ZMarkStackList _published;
 77   ZCACHE_ALIGNED ZMarkStackList _overflowed;
 78 
 79 public:
 80   ZMarkStripe();
 81 
 82   bool is_empty() const;
 83 
 84   void publish_stack(ZMarkStack* stack, bool publish = true);
 85   ZMarkStack* steal_stack();
 86 };
< prev index next >