X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/d6d03a0a88c2673c9e5c604d63912b77bc17fdd4..0ba0b5da8a4948ab678226c4456f97b9b85a71c6:/src/bindings/java/jmsg.cpp diff --git a/src/bindings/java/jmsg.cpp b/src/bindings/java/jmsg.cpp index ec98fdec31..11342f25b4 100644 --- a/src/bindings/java/jmsg.cpp +++ b/src/bindings/java/jmsg.cpp @@ -5,7 +5,7 @@ /* This program is free software; you can redistribute it and/or modify it * under the terms of the license (GNU LGPL) which comes with this package. */ -#include +#include #include "simgrid/msg.h" #include "simgrid/plugins/energy.h" @@ -39,7 +39,6 @@ SG_BEGIN_DECL() int JAVA_HOST_LEVEL = -1; -int JAVA_STORAGE_LEVEL = -1; XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(java); @@ -89,17 +88,9 @@ static void __JAVA_host_priv_free(void *host) { } -static void __JAVA_storage_priv_free(void *storage) -{ -} - JNIEXPORT void JNICALL Java_org_simgrid_msg_Msg_init(JNIEnv * env, jclass cls, jobjectArray jargs) { - char **argv = nullptr; - int index; int argc = 0; - jstring jval; - const char *tmp; XBT_LOG_CONNECT(java); XBT_LOG_CONNECT(jtrace); @@ -118,12 +109,12 @@ JNIEXPORT void JNICALL Java_org_simgrid_msg_Msg_init(JNIEnv * env, jclass cls, j argc = static_cast(env->GetArrayLength(jargs)); argc++; - argv = xbt_new(char *, argc + 1); + char** argv = new char*[argc + 1]; argv[0] = xbt_strdup("java"); - for (index = 0; index < argc - 1; index++) { - jval = (jstring) env->GetObjectArrayElement(jargs, index); - tmp = env->GetStringUTFChars(jval, 0); + for (int index = 0; index < argc - 1; index++) { + jstring jval = (jstring)env->GetObjectArrayElement(jargs, index); + const char* tmp = env->GetStringUTFChars(jval, 0); argv[index + 1] = xbt_strdup(tmp); env->ReleaseStringUTFChars(jval, tmp); } @@ -132,14 +123,13 @@ JNIEXPORT void JNICALL Java_org_simgrid_msg_Msg_init(JNIEnv * env, jclass cls, j MSG_init(&argc, argv); JAVA_HOST_LEVEL = simgrid::s4u::Host::extension_create(__JAVA_host_priv_free); - JAVA_STORAGE_LEVEL = xbt_lib_add_level(storage_lib, __JAVA_storage_priv_free); - for (index = 0; index < argc - 1; index++) { + for (int index = 0; index < argc - 1; index++) { env->SetObjectArrayElement(jargs, index, (jstring)env->NewStringUTF(argv[index + 1])); free(argv[index]); } free(argv[argc]); - free(argv); + delete[] argv; } JNIEXPORT void JNICALL JNICALL Java_org_simgrid_msg_Msg_run(JNIEnv * env, jclass cls) @@ -164,15 +154,8 @@ JNIEXPORT void JNICALL JNICALL Java_org_simgrid_msg_Msg_run(JNIEnv * env, jclass xbt_dynar_free(&hosts); /* Cleanup java storages */ - xbt_dynar_t storages = MSG_storages_as_dynar(); - if(!xbt_dynar_is_empty(storages)){ - for (unsigned long index = 0; index < xbt_dynar_length(storages) - 1; index++) { - jobject jstorage = (jobject) xbt_lib_get_level(xbt_dynar_get_as(storages,index,msg_storage_t), JAVA_STORAGE_LEVEL); - if (jstorage) - jstorage_unref(env, jstorage); - } - } - xbt_dynar_free(&storages); + for (auto elm : java_storage_map) + jstorage_unref(env, elm.second); } JNIEXPORT void JNICALL Java_org_simgrid_msg_Msg_createEnvironment(JNIEnv * env, jclass cls, jstring jplatformFile) @@ -188,12 +171,12 @@ JNIEXPORT jobject JNICALL Java_org_simgrid_msg_Msg_environmentGetRoutingRoot(JNI { msg_netzone_t as = MSG_zone_get_root(); jobject jas = jnetzone_new_instance(env); - if (!jas) { + if (not jas) { jxbt_throw_jni(env, "java As instantiation failed"); return nullptr; } jas = jnetzone_ref(env, jas); - if (!jas) { + if (not jas) { jxbt_throw_jni(env, "new global ref allocation failed"); return nullptr; } @@ -302,7 +285,7 @@ static int java_main(int argc, char *argv[]) for (int i = 1; i < argc; i++) env->SetObjectArrayElement(args,i - 1, env->NewStringUTF(argv[i])); //Retrieve the host for the process. - jstring jhostName = env->NewStringUTF(MSG_host_self()->cname()); + jstring jhostName = env->NewStringUTF(MSG_host_self()->getCname()); jobject jhost = Java_org_simgrid_msg_Host_getByName(env, nullptr, jhostName); //creates the process jobject jprocess = env->NewObject(class_Process, constructor_Process, jhost, jname, args);