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