< prev index next >

src/hotspot/share/gc/z/zSafeDelete.inline.hpp

Print this page

        

@@ -27,48 +27,48 @@
 #include "gc/z/zArray.inline.hpp"
 #include "gc/z/zSafeDelete.hpp"
 #include "metaprogramming/isArray.hpp"
 #include "utilities/debug.hpp"
 
-template <typename T>
-ZSafeDelete<T>::ZSafeDelete() :
+template <typename LockT, typename T>
+ZSafeDeleteImpl<LockT, T>::ZSafeDeleteImpl() :
     _lock(),
     _enabled(0),
     _deferred() {}
 
-template <typename T>
-bool ZSafeDelete<T>::deferred_delete(ItemT* item) {
-  ZLocker<ZLock> locker(&_lock);
+template <typename LockT, typename T>
+bool ZSafeDeleteImpl<LockT, T>::deferred_delete(ItemT* item) {
+  ZLocker<LockT> locker(&_lock);
   if (_enabled > 0) {
     _deferred.add(item);
     return true;
   }
 
   return false;
 }
 
-template <typename T>
-void ZSafeDelete<T>::immediate_delete(ItemT* item) {
+template <typename LockT, typename T>
+void ZSafeDeleteImpl<LockT, T>::immediate_delete(ItemT* item) {
   if (IsArray<T>::value) {
     delete [] item;
   } else {
     delete item;
   }
 }
 
-template <typename T>
-void ZSafeDelete<T>::enable_deferred_delete() {
-  ZLocker<ZLock> locker(&_lock);
+template <typename LockT, typename T>
+void ZSafeDeleteImpl<LockT, T>::enable_deferred_delete() {
+  ZLocker<LockT> locker(&_lock);
   _enabled++;
 }
 
-template <typename T>
-void ZSafeDelete<T>::disable_deferred_delete() {
+template <typename LockT, typename T>
+void ZSafeDeleteImpl<LockT, T>::disable_deferred_delete() {
   ZArray<ItemT*> deferred;
 
   {
-    ZLocker<ZLock> locker(&_lock);
+    ZLocker<LockT> locker(&_lock);
     assert(_enabled > 0, "Invalid state");
     if (--_enabled == 0) {
       deferred.transfer(&_deferred);
     }
   }

@@ -77,12 +77,12 @@
   for (ItemT* item; iter.next(&item);) {
     immediate_delete(item);
   }
 }
 
-template <typename T>
-void ZSafeDelete<T>::operator()(ItemT* item) {
+template <typename LockT, typename T>
+void ZSafeDeleteImpl<LockT, T>::operator()(ItemT* item) {
   if (!deferred_delete(item)) {
     immediate_delete(item);
   }
 }
 
< prev index next >