diff --git a/src/cpp/runKernel/ArrayBuffer.cpp b/src/cpp/runKernel/ArrayBuffer.cpp index 55be9ebc517d3a43f2d06b02e43c15ef2afef9f1..895220f2ab466a61c459f2559ba99412ef059de0 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 0056c77c9b632cac5db0c5d6b19f17c3bd446f55..569fc9a6864c90ab812e725f3b73c3e26aa2aa95 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; }