< prev index next >
src/hotspot/share/gc/z/zMarkStack.hpp
Print this page
*** 50,60 ****
ZStack<T, S>* next() const;
ZStack<T, S>** next_addr();
};
template <typename T>
! class ZStackList VALUE_OBJ_CLASS_SPEC {
private:
T* volatile _head;
T* encode_versioned_pointer(const T* stack, uint32_t version) const;
void decode_versioned_pointer(const T* vstack, T** stack, uint32_t* version) const;
--- 50,60 ----
ZStack<T, S>* next() const;
ZStack<T, S>** next_addr();
};
template <typename T>
! class ZStackList {
private:
T* volatile _head;
T* encode_versioned_pointer(const T* stack, uint32_t version) const;
void decode_versioned_pointer(const T* vstack, T** stack, uint32_t* version) const;
*** 71,81 ****
typedef ZStack<ZMarkStackEntry, ZMarkStackSlots> ZMarkStack;
typedef ZStackList<ZMarkStack> ZMarkStackList;
typedef ZStack<ZMarkStack*, ZMarkStackMagazineSlots> ZMarkStackMagazine;
typedef ZStackList<ZMarkStackMagazine> ZMarkStackMagazineList;
! class ZMarkStackSpace VALUE_OBJ_CLASS_SPEC {
private:
ZLock _expand_lock;
volatile uintptr_t _top;
volatile uintptr_t _end;
--- 71,81 ----
typedef ZStack<ZMarkStackEntry, ZMarkStackSlots> ZMarkStack;
typedef ZStackList<ZMarkStack> ZMarkStackList;
typedef ZStack<ZMarkStack*, ZMarkStackMagazineSlots> ZMarkStackMagazine;
typedef ZStackList<ZMarkStackMagazine> ZMarkStackMagazineList;
! class ZMarkStackSpace {
private:
ZLock _expand_lock;
volatile uintptr_t _top;
volatile uintptr_t _end;
*** 90,100 ****
bool is_initialized() const;
uintptr_t alloc(size_t size);
};
! class ZMarkStackAllocator VALUE_OBJ_CLASS_SPEC {
private:
ZMarkStackMagazineList _freelist ATTRIBUTE_ALIGNED(DEFAULT_CACHE_LINE_SIZE);
ZMarkStackSpace _space ATTRIBUTE_ALIGNED(DEFAULT_CACHE_LINE_SIZE);
void prime_freelist();
--- 90,100 ----
bool is_initialized() const;
uintptr_t alloc(size_t size);
};
! class ZMarkStackAllocator {
private:
ZMarkStackMagazineList _freelist ATTRIBUTE_ALIGNED(DEFAULT_CACHE_LINE_SIZE);
ZMarkStackSpace _space ATTRIBUTE_ALIGNED(DEFAULT_CACHE_LINE_SIZE);
void prime_freelist();
*** 107,117 ****
ZMarkStackMagazine* alloc_magazine();
void free_magazine(ZMarkStackMagazine* magazine);
};
! class ZMarkStripe VALUE_OBJ_CLASS_SPEC {
private:
ZMarkStackList _published ATTRIBUTE_ALIGNED(DEFAULT_CACHE_LINE_SIZE);
ZMarkStackList _overflowed ATTRIBUTE_ALIGNED(DEFAULT_CACHE_LINE_SIZE);
public:
--- 107,117 ----
ZMarkStackMagazine* alloc_magazine();
void free_magazine(ZMarkStackMagazine* magazine);
};
! class ZMarkStripe {
private:
ZMarkStackList _published ATTRIBUTE_ALIGNED(DEFAULT_CACHE_LINE_SIZE);
ZMarkStackList _overflowed ATTRIBUTE_ALIGNED(DEFAULT_CACHE_LINE_SIZE);
public:
*** 121,131 ****
void publish_stack(ZMarkStack* stack, bool publish = true);
ZMarkStack* steal_stack();
};
! class ZMarkStripeSet VALUE_OBJ_CLASS_SPEC {
private:
size_t _nstripes;
size_t _nstripes_mask;
ZMarkStripe _stripes[ZMarkStripesMax];
--- 121,131 ----
void publish_stack(ZMarkStack* stack, bool publish = true);
ZMarkStack* steal_stack();
};
! class ZMarkStripeSet {
private:
size_t _nstripes;
size_t _nstripes_mask;
ZMarkStripe _stripes[ZMarkStripesMax];
*** 142,152 ****
ZMarkStripe* stripe_next(ZMarkStripe* stripe);
ZMarkStripe* stripe_for_worker(uint nworkers, uint worker_id);
ZMarkStripe* stripe_for_addr(uintptr_t addr);
};
! class ZMarkThreadLocalStacks VALUE_OBJ_CLASS_SPEC {
private:
ZMarkStackMagazine* _magazine;
ZMarkStack* _stacks[ZMarkStripesMax];
ZMarkStack* allocate_stack(ZMarkStackAllocator* allocator);
--- 142,152 ----
ZMarkStripe* stripe_next(ZMarkStripe* stripe);
ZMarkStripe* stripe_for_worker(uint nworkers, uint worker_id);
ZMarkStripe* stripe_for_addr(uintptr_t addr);
};
! class ZMarkThreadLocalStacks {
private:
ZMarkStackMagazine* _magazine;
ZMarkStack* _stacks[ZMarkStripesMax];
ZMarkStack* allocate_stack(ZMarkStackAllocator* allocator);
< prev index next >