From 79e423def6c516d22fa9cf741a14cdb0f42ed6fc Mon Sep 17 00:00:00 2001 From: CoreRasurae <luis.p.mendes@gmail.com> Date: Thu, 22 Aug 2019 11:56:50 +0100 Subject: [PATCH] Refactor: Refactored ArrayBuffer class and Aparapi.cpp to make it more OO in terms of concerns separation (cont.) --- src/cpp/runKernel/ArrayBuffer.cpp | 8 +++++--- src/cpp/runKernel/JNIContext.cpp | 13 +------------ 2 files changed, 6 insertions(+), 15 deletions(-) diff --git a/src/cpp/runKernel/ArrayBuffer.cpp b/src/cpp/runKernel/ArrayBuffer.cpp index 55be9eb..895220f 100644 --- a/src/cpp/runKernel/ArrayBuffer.cpp +++ b/src/cpp/runKernel/ArrayBuffer.cpp @@ -94,10 +94,10 @@ void ArrayBuffer::syncMinimalParams(JNIEnv *jenv, KernelArg *arg) { void ArrayBuffer::replaceJavaArray(JNIEnv *jenv, KernelArg *arg, jarray newRef) { cl_int status = CL_SUCCESS; if (javaArray != NULL) { - jenv->DeleteWeakGlobalRef((jweak) javaArray); if (config->isVerbose()){ fprintf(stderr, "DeleteWeakGlobalRef for %s: %p\n", arg->name, javaArray); } + jenv->DeleteWeakGlobalRef((jweak) javaArray); javaArray = 0; } @@ -109,6 +109,7 @@ void ArrayBuffer::replaceJavaArray(JNIEnv *jenv, KernelArg *arg, jarray newRef) } status = clReleaseMemObject((cl_mem)mem); //fprintf(stderr, "<--releaseMemObject[%d]\n", i); + CLException::checkCLError(status, "clReleaseMemObject()"); if(status != CL_SUCCESS) throw CLException(status, "clReleaseMemObject()"); mem = (cl_mem)0; } @@ -131,11 +132,11 @@ void ArrayBuffer::replaceJavaArray(JNIEnv *jenv, KernelArg *arg, jarray newRef) void ArrayBuffer::deleteJavaArray(JNIEnv *jenv, KernelArg *arg) { cl_int status = CL_SUCCESS; if (javaArray != NULL) { - jenv->DeleteWeakGlobalRef((jweak) ArrayBuffer::javaArray); if (config->isVerbose()){ fprintf(stderr, "DeleteWeakGlobalRef for %s: %p\n", arg->name, ArrayBuffer::javaArray); } - javaArray = 0; + jenv->DeleteWeakGlobalRef((jweak) ArrayBuffer::javaArray); + javaArray=0; } // need to free opencl buffers, run will reallocate later @@ -146,6 +147,7 @@ void ArrayBuffer::deleteJavaArray(JNIEnv *jenv, KernelArg *arg) { } status = clReleaseMemObject((cl_mem)mem); //fprintf(stderr, "<--releaseMemObject[%d]\n", i); + CLException::checkCLError(status, "clReleaseMemObject()"); if(status != CL_SUCCESS) throw CLException(status, "clReleaseMemObject()"); mem = (cl_mem)0; } diff --git a/src/cpp/runKernel/JNIContext.cpp b/src/cpp/runKernel/JNIContext.cpp index 0056c77..569fc9a 100644 --- a/src/cpp/runKernel/JNIContext.cpp +++ b/src/cpp/runKernel/JNIContext.cpp @@ -86,18 +86,7 @@ void JNIContext::dispose(JNIEnv *jenv, Config* config) { if (!arg->isPrimitive()){ if (arg->isArray()) { if (arg->arrayBuffer != NULL){ - if (arg->arrayBuffer->mem != 0){ - if (config->isTrackingOpenCLResources()){ - memList.remove((cl_mem)arg->arrayBuffer->mem, __LINE__, __FILE__); - } - status = clReleaseMemObject((cl_mem)arg->arrayBuffer->mem); - //fprintf(stdout, "dispose arg %d %0lx\n", i, arg->arrayBuffer->mem); - CLException::checkCLError(status, "clReleaseMemObject()"); - arg->arrayBuffer->mem = (cl_mem)0; - } - if (arg->arrayBuffer->javaArray != NULL) { - jenv->DeleteWeakGlobalRef((jweak) arg->arrayBuffer->javaArray); - } + arg->arrayBuffer->deleteJavaArray(jenv, arg); delete arg->arrayBuffer; arg->arrayBuffer = NULL; } -- GitLab