X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/9932a0c0d2c44e34633c97a827b2b04d615cb4e9..2a193bac5da10ecc5d35b4763f5b5a247428b01b:/src/bindings/java/jmsg_task.c diff --git a/src/bindings/java/jmsg_task.c b/src/bindings/java/jmsg_task.c index 850a999a2c..b8048f0681 100644 --- a/src/bindings/java/jmsg_task.c +++ b/src/bindings/java/jmsg_task.c @@ -1,6 +1,6 @@ /* Functions related to the java task instances. */ -/* Copyright (c) 2007, 2009-2010, 2013-2014. The SimGrid Team. +/* Copyright (c) 2007, 2009-2010, 2013-2015. The SimGrid Team. * All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it @@ -482,8 +482,8 @@ Java_org_simgrid_msg_Task_irecv(JNIEnv * env, jclass cls, jstring jmailbox) { comm = MSG_task_irecv(task,mailbox); - (*env)->SetLongField(env, jcomm, jtask_field_Comm_bind, (jlong) (long)(comm)); - (*env)->SetLongField(env, jcomm, jtask_field_Comm_taskBind, (jlong) (long)(task)); + (*env)->SetLongField(env, jcomm, jtask_field_Comm_bind, (jlong) (uintptr_t)(comm)); + (*env)->SetLongField(env, jcomm, jtask_field_Comm_taskBind, (jlong) (uintptr_t)(task)); (*env)->SetBooleanField(env, jcomm, jtask_field_Comm_receiving, JNI_TRUE); (*env)->ReleaseStringUTFChars(env, jmailbox, mailbox); @@ -564,8 +564,8 @@ Java_org_simgrid_msg_Task_irecvBounded(JNIEnv * env, jclass cls, comm = MSG_task_irecv_bounded(task,mailbox, (double) rate); - (*env)->SetLongField(env, jcomm, jtask_field_Comm_bind, (jlong) (long)(comm)); - (*env)->SetLongField(env, jcomm, jtask_field_Comm_taskBind, (jlong) (long)(task)); + (*env)->SetLongField(env, jcomm, jtask_field_Comm_bind, (jlong) (uintptr_t)(comm)); + (*env)->SetLongField(env, jcomm, jtask_field_Comm_taskBind, (jlong) (uintptr_t)(task)); (*env)->SetBooleanField(env, jcomm, jtask_field_Comm_receiving, JNI_TRUE); (*env)->ReleaseStringUTFChars(env, jmailbox, mailbox); @@ -603,8 +603,8 @@ Java_org_simgrid_msg_Task_isend(JNIEnv *env, jobject jtask, jstring jmailbox) { MSG_task_set_data(task, (void *) (*env)->NewGlobalRef(env, jtask)); comm = MSG_task_isend(task,mailbox); - (*env)->SetLongField(env, jcomm, jtask_field_Comm_bind, (jlong) (long)(comm)); - (*env)->SetLongField(env, jcomm, jtask_field_Comm_taskBind, (jlong) (long)(NULL)); + (*env)->SetLongField(env, jcomm, jtask_field_Comm_bind, (jlong) (uintptr_t)(comm)); + (*env)->SetLongField(env, jcomm, jtask_field_Comm_taskBind, (jlong) (uintptr_t)(NULL)); (*env)->SetBooleanField(env, jcomm, jtask_field_Comm_receiving, JNI_FALSE); (*env)->ReleaseStringUTFChars(env, jmailbox, mailbox); @@ -642,8 +642,8 @@ Java_org_simgrid_msg_Task_isendBounded(JNIEnv *env, jobject jtask, jstring jmail MSG_task_set_data(task, (void *) (*env)->NewGlobalRef(env, jtask)); comm = MSG_task_isend_bounded(task,mailbox,maxrate); - (*env)->SetLongField(env, jcomm, jtask_field_Comm_bind, (jlong) (long)(comm)); - (*env)->SetLongField(env, jcomm, jtask_field_Comm_taskBind, (jlong) (long)(NULL)); + (*env)->SetLongField(env, jcomm, jtask_field_Comm_bind, (jlong) (uintptr_t)(comm)); + (*env)->SetLongField(env, jcomm, jtask_field_Comm_taskBind, (jlong) (uintptr_t)(NULL)); (*env)->SetBooleanField(env, jcomm, jtask_field_Comm_receiving, JNI_FALSE); (*env)->ReleaseStringUTFChars(env, jmailbox, mailbox); @@ -651,7 +651,17 @@ MSG_task_set_data(task, (void *) (*env)->NewGlobalRef(env, jtask)); return jcomm; } +JNIEXPORT void JNICALL +Java_org_simgrid_msg_Task_nativeFinalize(JNIEnv * env, jobject jtask) { + msg_task_t task = jtask_to_native_task(jtask, env); + + if (!task) { + jxbt_throw_notbound(env, "task", jtask); + return; + } + MSG_task_destroy(task); +} static void msg_task_cancel_on_failed_dsend(void*t) { msg_task_t task = t;