< prev index next >
src/hotspot/share/gc/z/zSafeDelete.hpp
Print this page
*** 27,52 ****
#include "gc/z/zArray.hpp"
#include "gc/z/zLock.hpp"
#include "metaprogramming/removeExtent.hpp"
template <typename T>
! class ZSafeDelete {
private:
typedef typename RemoveExtent<T>::type ItemT;
! ZLock _lock;
uint64_t _enabled;
ZArray<ItemT*> _deferred;
bool deferred_delete(ItemT* item);
void immediate_delete(ItemT* item);
public:
! ZSafeDelete();
void enable_deferred_delete();
void disable_deferred_delete();
void operator()(ItemT* item);
};
#endif // SHARE_GC_Z_ZSAFEDELETE_HPP
--- 27,67 ----
#include "gc/z/zArray.hpp"
#include "gc/z/zLock.hpp"
#include "metaprogramming/removeExtent.hpp"
template <typename T>
! class ZSafeDeleteImpl {
private:
typedef typename RemoveExtent<T>::type ItemT;
! ZLock* _lock;
uint64_t _enabled;
ZArray<ItemT*> _deferred;
bool deferred_delete(ItemT* item);
void immediate_delete(ItemT* item);
public:
! ZSafeDeleteImpl(ZLock* lock);
void enable_deferred_delete();
void disable_deferred_delete();
void operator()(ItemT* item);
};
+ template <typename T>
+ class ZSafeDelete : public ZSafeDeleteImpl<T> {
+ private:
+ ZLock _lock;
+
+ public:
+ ZSafeDelete();
+ };
+
+ template <typename T>
+ class ZSafeDeleteNoLock : public ZSafeDeleteImpl<T> {
+ public:
+ ZSafeDeleteNoLock();
+ };
+
#endif // SHARE_GC_Z_ZSAFEDELETE_HPP
< prev index next >