/* 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
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);
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);
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);
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);
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;