X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/f06041cf2c450457a0b47a49b66b19cb9133c18e..cbf284725ad8abc7b3baa8aec1d51950f23561e3:/src/bindings/java/jmsg_task.c diff --git a/src/bindings/java/jmsg_task.c b/src/bindings/java/jmsg_task.c index 850a999a2c..f9352b2eee 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 @@ -8,8 +8,6 @@ #include "jmsg.h" -#include "smx_context_java.h" - #include "jmsg_host.h" #include "jmsg_task.h" @@ -19,6 +17,8 @@ XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(jmsg); +jobject native_to_java_process(msg_process_t process); + static jmethodID jtask_method_Comm_constructor; static jfieldID jtask_field_Task_bind; @@ -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;