Skip to content

Commit c5be693

Browse files
committed
Add decrementAndTest back in to fix logic in checks.
1 parent 5837b04 commit c5be693

19 files changed

+23
-22
lines changed

unified-runtime/source/adapters/level_zero/command_buffer.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -848,7 +848,7 @@ urCommandBufferRetainExp(ur_exp_command_buffer_handle_t CommandBuffer) {
848848

849849
ur_result_t
850850
urCommandBufferReleaseExp(ur_exp_command_buffer_handle_t CommandBuffer) {
851-
if (!CommandBuffer->decrementRefCount() == 0)
851+
if (!CommandBuffer->decrementAndTest())
852852
return UR_RESULT_SUCCESS;
853853

854854
UR_CALL(waitForOngoingExecution(CommandBuffer));

unified-runtime/source/adapters/level_zero/context.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -251,7 +251,7 @@ ur_device_handle_t ur_context_handle_t_::getRootDevice() const {
251251
// from the list of tracked contexts.
252252
ur_result_t ContextReleaseHelper(ur_context_handle_t Context) {
253253

254-
if (!Context->decrementRefCount() == 0)
254+
if (!Context->decrementAndTest())
255255
return UR_RESULT_SUCCESS;
256256

257257
if (IndirectAccessTrackingEnabled) {

unified-runtime/source/adapters/level_zero/device.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1651,7 +1651,7 @@ ur_result_t urDeviceRetain(ur_device_handle_t Device) {
16511651
ur_result_t urDeviceRelease(ur_device_handle_t Device) {
16521652
// Root devices are destroyed during the piTearDown process.
16531653
if (Device->isSubDevice()) {
1654-
if (Device->decrementRefCount() == 0) {
1654+
if (Device->decrementAndTest()) {
16551655
delete Device;
16561656
}
16571657
}

unified-runtime/source/adapters/level_zero/event.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1088,7 +1088,7 @@ ur_event_handle_t_::~ur_event_handle_t_() {
10881088

10891089
ur_result_t urEventReleaseInternal(ur_event_handle_t Event,
10901090
bool *isEventDeleted) {
1091-
if (!Event->decrementRefCount() == 0)
1091+
if (!Event->decrementAndTest())
10921092
return UR_RESULT_SUCCESS;
10931093

10941094
if (Event->OriginAllocEvent) {

unified-runtime/source/adapters/level_zero/kernel.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -946,7 +946,7 @@ ur_result_t urKernelRetain(
946946
ur_result_t urKernelRelease(
947947
/// [in] handle for the Kernel to release
948948
ur_kernel_handle_t Kernel) {
949-
if (!Kernel->decrementRefCount() == 0)
949+
if (!Kernel->decrementAndTest())
950950
return UR_RESULT_SUCCESS;
951951

952952
auto KernelProgram = Kernel->Program;

unified-runtime/source/adapters/level_zero/memory.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1642,7 +1642,7 @@ ur_result_t urMemRetain(
16421642
ur_result_t urMemRelease(
16431643
/// [in] handle of the memory object to release
16441644
ur_mem_handle_t Mem) {
1645-
if (!Mem->decrementRefCount() == 0)
1645+
if (!Mem->decrementAndTest())
16461646
return UR_RESULT_SUCCESS;
16471647

16481648
if (Mem->isImage()) {

unified-runtime/source/adapters/level_zero/physical_mem.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ ur_result_t urPhysicalMemRetain(ur_physical_mem_handle_t hPhysicalMem) {
4747
}
4848

4949
ur_result_t urPhysicalMemRelease(ur_physical_mem_handle_t hPhysicalMem) {
50-
if (!hPhysicalMem->decrementRefCount() == 0)
50+
if (!hPhysicalMem->decrementAndTest())
5151
return UR_RESULT_SUCCESS;
5252

5353
if (checkL0LoaderTeardown()) {

unified-runtime/source/adapters/level_zero/program.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -565,7 +565,7 @@ ur_result_t urProgramRetain(
565565
ur_result_t urProgramRelease(
566566
/// [in] handle for the Program to release
567567
ur_program_handle_t Program) {
568-
if (!Program->decrementRefCount() == 0)
568+
if (!Program->decrementAndTest())
569569
return UR_RESULT_SUCCESS;
570570

571571
delete Program;
@@ -1115,7 +1115,7 @@ void ur_program_handle_t_::ur_release_program_resources(bool deletion) {
11151115
// must be destroyed before the Module can be destroyed. So, be sure
11161116
// to destroy build log before destroying the module.
11171117
if (!deletion) {
1118-
if (!decrementRefCount() == 0) {
1118+
if (!decrementAndTest()) {
11191119
return;
11201120
}
11211121
}

unified-runtime/source/adapters/level_zero/queue.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -612,7 +612,7 @@ ur_result_t urQueueRelease(
612612
// internal reference count. When the External Reference count == 0, then
613613
// cleanup of the queue begins and the final decrement of the internal
614614
// reference count is completed.
615-
static_cast<void>(Queue->decrementRefCount() == 0);
615+
static_cast<void>(Queue->decrementAndTest());
616616
return UR_RESULT_SUCCESS;
617617
}
618618

@@ -1588,7 +1588,7 @@ void ur_queue_handle_t_::clearEndTimeRecordings() {
15881588
}
15891589

15901590
ur_result_t urQueueReleaseInternal(ur_queue_handle_t Queue) {
1591-
if (!Queue->decrementRefCount() == 0)
1591+
if (!Queue->decrementAndTest())
15921592
return UR_RESULT_SUCCESS;
15931593

15941594
for (auto &Cache : Queue->EventCaches) {

unified-runtime/source/adapters/level_zero/sampler.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ ur_result_t urSamplerRetain(
131131
ur_result_t urSamplerRelease(
132132
/// [in] handle of the sampler object to release
133133
ur_sampler_handle_t Sampler) {
134-
if (!Sampler->decrementRefCount() == 0)
134+
if (!Sampler->decrementAndTest())
135135
return UR_RESULT_SUCCESS;
136136

137137
if (checkL0LoaderTeardown()) {

unified-runtime/source/adapters/level_zero/usm.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -530,7 +530,7 @@ urUSMPoolRetain(ur_usm_pool_handle_t Pool) {
530530
ur_result_t
531531
/// [in] pointer to USM memory pool
532532
urUSMPoolRelease(ur_usm_pool_handle_t Pool) {
533-
if (Pool->decrementRefCount() == 0) {
533+
if (Pool->decrementAndTest()) {
534534
std::scoped_lock<ur_shared_mutex> ContextLock(Pool->Context->Mutex);
535535
Pool->Context->UsmPoolHandles.remove(Pool);
536536
delete Pool;
@@ -1250,7 +1250,7 @@ ur_result_t ZeMemFreeHelper(ur_context_handle_t Context, void *Ptr) {
12501250
if (It == std::end(Context->MemAllocs)) {
12511251
die("All memory allocations must be tracked!");
12521252
}
1253-
if (!It->second.decrementRefCount() == 0) {
1253+
if (!It->second.decrementAndTest()) {
12541254
// Memory can't be deallocated yet.
12551255
return UR_RESULT_SUCCESS;
12561256
}
@@ -1297,7 +1297,7 @@ ur_result_t USMFreeHelper(ur_context_handle_t Context, void *Ptr,
12971297
if (It == std::end(Context->MemAllocs)) {
12981298
die("All memory allocations must be tracked!");
12991299
}
1300-
if (!It->second.decrementRefCount() == 0) {
1300+
if (!It->second.decrementAndTest()) {
13011301
// Memory can't be deallocated yet.
13021302
return UR_RESULT_SUCCESS;
13031303
}

unified-runtime/source/adapters/level_zero/v2/command_buffer.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -266,7 +266,7 @@ urCommandBufferRetainExp(ur_exp_command_buffer_handle_t hCommandBuffer) try {
266266

267267
ur_result_t
268268
urCommandBufferReleaseExp(ur_exp_command_buffer_handle_t hCommandBuffer) try {
269-
if (!hCommandBuffer->decrementRefCount() == 0)
269+
if (!hCommandBuffer->decrementAndTest())
270270
return UR_RESULT_SUCCESS;
271271

272272
if (auto executionEvent = hCommandBuffer->getExecutionEventUnlocked()) {

unified-runtime/source/adapters/level_zero/v2/context.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ ur_result_t ur_context_handle_t_::retain() {
8585
}
8686

8787
ur_result_t ur_context_handle_t_::release() {
88-
if (!decrementRefCount() == 0)
88+
if (!decrementAndTest())
8989
return UR_RESULT_SUCCESS;
9090

9191
delete this;

unified-runtime/source/adapters/level_zero/v2/event.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,7 @@ ur_result_t ur_event_handle_t_::retain() {
165165
}
166166

167167
ur_result_t ur_event_handle_t_::release() {
168-
if (!decrementRefCount() == 0)
168+
if (!decrementAndTest())
169169
return UR_RESULT_SUCCESS;
170170

171171
if (event_pool) {

unified-runtime/source/adapters/level_zero/v2/kernel.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ ur_kernel_handle_t_::ur_kernel_handle_t_(
9797
}
9898

9999
ur_result_t ur_kernel_handle_t_::release() {
100-
if (!decrementRefCount() == 0)
100+
if (!decrementAndTest())
101101
return UR_RESULT_SUCCESS;
102102

103103
// manually release kernels to allow errors to be propagated

unified-runtime/source/adapters/level_zero/v2/memory.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -691,7 +691,7 @@ ur_result_t urMemRetain(ur_mem_handle_t hMem) try {
691691
}
692692

693693
ur_result_t urMemRelease(ur_mem_handle_t hMem) try {
694-
if (!hMem->getObject()->decrementRefCount() == 0)
694+
if (!hMem->getObject()->decrementAndTest())
695695
return UR_RESULT_SUCCESS;
696696

697697
delete hMem;

unified-runtime/source/adapters/level_zero/v2/queue_handle.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ struct ur_queue_handle_t_ : ur::handle_base<ur::level_zero::ddi_getter> {
5757
ur_result_t queueRelease() {
5858
return std::visit(
5959
[queueHandle = this](auto &q) {
60-
if (!q.decrementRefCount() == 0)
60+
if (!q.decrementAndTest())
6161
return UR_RESULT_SUCCESS;
6262
delete queueHandle;
6363
return UR_RESULT_SUCCESS;

unified-runtime/source/adapters/level_zero/v2/usm.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -343,7 +343,7 @@ urUSMPoolRetain(ur_usm_pool_handle_t hPool) try {
343343
ur_result_t
344344
/// [in] pointer to USM memory pool
345345
urUSMPoolRelease(ur_usm_pool_handle_t hPool) try {
346-
if (hPool->decrementRefCount() == 0) {
346+
if (hPool->decrementAndTest()) {
347347
hPool->getContextHandle()->removeUsmPool(hPool);
348348
delete hPool;
349349
}

unified-runtime/source/ur/ur.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -232,6 +232,7 @@ template <typename getddi> struct handle_base {
232232
uint32_t getRefCount() const noexcept { return Count.load(); }
233233
uint32_t incrementRefCount() { return ++Count; }
234234
uint32_t decrementRefCount() { return --Count; }
235+
bool decrementAndTest() { return --Count == 0; }
235236
void resetRefCount() { Count = 1; }
236237

237238
private:

0 commit comments

Comments
 (0)