< 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 >