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