@@ -69,17 +69,24 @@ void RefHazardObject::addRef(thread_db*)
6969 ++counter;
7070}
7171
72- HazardBase::HazardBase (thread_db* tdbb)
73- : hazardDelayed(tdbb->getAttachment ()->att_delayed_delete)
74- { }
72+ HazardDelayedDelete* HazardBase::getHazardDelayed (thread_db* tdbb)
73+ {
74+ if (!tdbb)
75+ tdbb = JRD_get_thread_data ();
76+ return &tdbb->getAttachment ()->att_delayed_delete ;
77+ }
7578
79+ HazardDelayedDelete* HazardBase::getHazardDelayed (Attachment* att)
80+ {
81+ return &att->att_delayed_delete ;
82+ }
7683
7784HazardDelayedDelete::HazardPointers* HazardDelayedDelete::HazardPointers::create (MemoryPool& p, unsigned size)
7885{
7986 return FB_NEW_RPT (p, size) HazardPointers (size);
8087}
8188
82- void HazardDelayedDelete::add (void * ptr)
89+ void HazardDelayedDelete::add (Ptr ptr)
8390{
8491 // as long as we access our own hazard pointers single relaxed load is OK
8592 HazardPointers *hp = hazardPointers.load (std::memory_order_relaxed);
@@ -111,7 +118,7 @@ void HazardDelayedDelete::add(void* ptr)
111118 hp->hpCount ++;
112119}
113120
114- void HazardDelayedDelete::remove (void * ptr)
121+ void HazardDelayedDelete::remove (Ptr ptr)
115122{
116123 // as long as we access our own hazard pointers single relaxed load is OK
117124 HazardPointers *hp = hazardPointers.load (std::memory_order_relaxed);
@@ -140,7 +147,7 @@ void HazardDelayedDelete::delayedDelete(HazardObject* mem, bool gc)
140147 garbageCollect (GarbageCollectMethod::GC_NORMAL);
141148}
142149
143- void HazardDelayedDelete::copyHazardPointers (LocalHP& local, void * * from, unsigned count)
150+ void HazardDelayedDelete::copyHazardPointers (LocalHP& local, Ptr * from, unsigned count)
144151{
145152 for (unsigned n = 0 ; n < count; ++n)
146153 {
0 commit comments