11
11
* All rights reserved.
12
12
* Copyright (c) 2015 Research Organization for Information Science
13
13
* and Technology (RIST). All rights reserved.
14
+ * Copyright (c) 2016 Los Alamos National Security, LLC. All rights
15
+ * reserved.
14
16
* $COPYRIGHT$
15
17
*
16
18
* Additional copyrights may follow
@@ -205,7 +207,10 @@ JNIEXPORT jlongArray JNICALL Java_mpi_Comm_iDup(
205
207
MPI_Comm newcomm ;
206
208
MPI_Request request ;
207
209
int rc = MPI_Comm_idup ((MPI_Comm )comm , & newcomm , & request );
208
- ompi_java_exceptionCheck (env , rc );
210
+
211
+ if (ompi_java_exceptionCheck (env , rc ))
212
+ return NULL ;
213
+
209
214
jlongArray jcr = (* env )-> NewLongArray (env , 2 );
210
215
jlong * cr = (jlong * )(* env )-> GetPrimitiveArrayCritical (env , jcr , NULL );
211
216
cr [0 ] = (jlong )newcomm ;
@@ -332,6 +337,7 @@ JNIEXPORT void JNICALL Java_mpi_Comm_recv(
332
337
jobject buf , jboolean db , jint offset , jint count ,
333
338
jlong jType , jint bType , jint source , jint tag , jlongArray jStatus )
334
339
{
340
+ jboolean exception ;
335
341
MPI_Comm comm = (MPI_Comm )jComm ;
336
342
MPI_Datatype type = (MPI_Datatype )jType ;
337
343
@@ -341,10 +347,12 @@ JNIEXPORT void JNICALL Java_mpi_Comm_recv(
341
347
342
348
MPI_Status status ;
343
349
int rc = MPI_Recv (ptr , count , type , source , tag , comm , & status );
344
- ompi_java_exceptionCheck (env , rc );
350
+ exception = ompi_java_exceptionCheck (env , rc );
345
351
346
352
ompi_java_releaseWritePtr (ptr ,item ,env ,buf ,db ,offset ,count ,type ,bType );
347
- ompi_java_status_set (env , jStatus , & status );
353
+
354
+ if (!exception )
355
+ ompi_java_status_set (env , jStatus , & status );
348
356
}
349
357
350
358
JNIEXPORT void JNICALL Java_mpi_Comm_sendRecv (
@@ -355,6 +363,7 @@ JNIEXPORT void JNICALL Java_mpi_Comm_sendRecv(
355
363
jlong rjType , jint rBType , jint source , jint rTag ,
356
364
jlongArray jStatus )
357
365
{
366
+ jboolean exception ;
358
367
MPI_Comm comm = (MPI_Comm )jComm ;
359
368
MPI_Datatype sType = (MPI_Datatype )sjType ;
360
369
MPI_Datatype rType = (MPI_Datatype )rjType ;
@@ -369,10 +378,12 @@ JNIEXPORT void JNICALL Java_mpi_Comm_sendRecv(
369
378
int rc = MPI_Sendrecv (sPtr , sCount , sType , dest , sTag ,
370
379
rPtr , rCount , rType , source , rTag , comm , & status );
371
380
372
- ompi_java_exceptionCheck (env , rc );
381
+ exception = ompi_java_exceptionCheck (env , rc );
373
382
ompi_java_releaseReadPtr (sPtr , sItem , sBuf , sdb );
374
383
ompi_java_releaseWritePtr (rPtr ,rItem ,env ,rBuf ,rdb ,rOff ,rCount ,rType ,rBType );
375
- ompi_java_status_set (env , jStatus , & status );
384
+
385
+ if (!exception )
386
+ ompi_java_status_set (env , jStatus , & status );
376
387
}
377
388
378
389
JNIEXPORT void JNICALL Java_mpi_Comm_sendRecvReplace (
@@ -392,8 +403,9 @@ JNIEXPORT void JNICALL Java_mpi_Comm_sendRecvReplace(
392
403
int rc = MPI_Sendrecv_replace (ptr , count , type , dest ,
393
404
sTag , source , rTag , comm , & status );
394
405
395
- ompi_java_exceptionCheck (env , rc );
396
- ompi_java_status_set (env , jStatus , & status );
406
+ if (!ompi_java_exceptionCheck (env , rc ))
407
+ ompi_java_status_set (env , jStatus , & status );
408
+
397
409
ompi_java_releaseWritePtr (ptr ,item ,env ,buf ,db ,offset ,count ,type ,bType );
398
410
}
399
411
@@ -662,8 +674,9 @@ JNIEXPORT void JNICALL Java_mpi_Comm_probe(
662
674
{
663
675
MPI_Status status ;
664
676
int rc = MPI_Probe (source , tag , (MPI_Comm )comm , & status );
665
- ompi_java_exceptionCheck (env , rc );
666
- ompi_java_status_set (env , jStatus , & status );
677
+
678
+ if (!ompi_java_exceptionCheck (env , rc ))
679
+ ompi_java_status_set (env , jStatus , & status );
667
680
}
668
681
669
682
JNIEXPORT jint JNICALL Java_mpi_Comm_getTopology (
0 commit comments