-/* Copyright (c) 2007-2020. The SimGrid Team. All rights reserved. */
+/* Copyright (c) 2007-2022. The SimGrid Team. All rights reserved. */
/* 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 "simgrid/plugins/file_system.h"
#include "simgrid/plugins/live_migration.h"
#include "simgrid/plugins/load.h"
-#include "simgrid/simix.h"
+#include "simgrid/s4u/Actor.hpp"
#include "simgrid/s4u/Host.hpp"
-#include "src/simix/smx_private.hpp"
-
#include "jmsg.hpp"
#include "jmsg_as.hpp"
#include "jmsg_host.h"
#include "jmsg_process.h"
-#include "jmsg_storage.h"
#include "jmsg_task.h"
#include "jxbt_utilities.hpp"
args.emplace_back("java");
for (int index = 1; index < argc; index++) {
- jstring jval = (jstring)env->GetObjectArrayElement(jargs, index - 1);
- const char* tmp = env->GetStringUTFChars(jval, 0);
- args.emplace_back(tmp);
- env->ReleaseStringUTFChars(jval, tmp);
+ auto jval = (jstring)env->GetObjectArrayElement(jargs, index - 1);
+ jstring_wrapper tmp(env, jval);
+ args.emplace_back(tmp.value);
}
std::unique_ptr<char* []> argv(new char*[argc + 1]);
sg_host_t* hosts = sg_host_list();
size_t host_count = sg_host_count();
for (size_t index = 0; index < host_count - 1; index++) {
- jobject jhost = (jobject)hosts[index]->extension(JAVA_HOST_LEVEL);
+ auto jhost = (jobject)hosts[index]->extension(JAVA_HOST_LEVEL);
if (jhost)
jhost_unref(env, jhost);
}
xbt_free(hosts);
- /* Cleanup java storages */
- for (auto const& elm : java_storage_map)
- jstorage_unref(env, elm.second);
-
/* Display the status of remaining threads. None should survive, but who knows */
jclass clsProcess = jxbt_get_class(env, "org/simgrid/msg/Process");
jmethodID idDebug = jxbt_get_static_jmethod(env, clsProcess, "debugAllThreads", "()V");
JNIEXPORT void JNICALL Java_org_simgrid_msg_Msg_createEnvironment(JNIEnv* env, jclass, jstring jplatformFile)
{
- const char *platformFile = env->GetStringUTFChars(jplatformFile, 0);
-
+ jstring_wrapper platformFile(env, jplatformFile);
simgrid_load_platform(platformFile);
-
- env->ReleaseStringUTFChars(jplatformFile, platformFile);
}
JNIEXPORT jobject JNICALL Java_org_simgrid_msg_Msg_environmentGetRoutingRoot(JNIEnv* env, jclass)
JNIEXPORT void JNICALL Java_org_simgrid_msg_Msg_debug(JNIEnv* env, jclass, jstring js)
{
- const char *s = env->GetStringUTFChars(js, 0);
- XBT_DEBUG("%s", s);
- env->ReleaseStringUTFChars(js, s);
+ jstring_wrapper s(env, js);
+ XBT_DEBUG("%s", s.value);
}
JNIEXPORT void JNICALL Java_org_simgrid_msg_Msg_verb(JNIEnv* env, jclass, jstring js)
{
- const char *s = env->GetStringUTFChars(js, 0);
- XBT_VERB("%s", s);
- env->ReleaseStringUTFChars(js, s);
+ jstring_wrapper s(env, js);
+ XBT_VERB("%s", s.value);
}
JNIEXPORT void JNICALL Java_org_simgrid_msg_Msg_info(JNIEnv* env, jclass, jstring js)
{
- const char *s = env->GetStringUTFChars(js, 0);
- XBT_INFO("%s", s);
- env->ReleaseStringUTFChars(js, s);
+ jstring_wrapper s(env, js);
+ XBT_INFO("%s", s.value);
}
JNIEXPORT void JNICALL Java_org_simgrid_msg_Msg_warn(JNIEnv* env, jclass, jstring js)
{
- const char *s = env->GetStringUTFChars(js, 0);
- XBT_WARN("%s", s);
- env->ReleaseStringUTFChars(js, s);
+ jstring_wrapper s(env, js);
+ XBT_WARN("%s", s.value);
}
JNIEXPORT void JNICALL Java_org_simgrid_msg_Msg_error(JNIEnv* env, jclass, jstring js)
{
- const char *s = env->GetStringUTFChars(js, 0);
- XBT_ERROR("%s", s);
- env->ReleaseStringUTFChars(js, s);
+ jstring_wrapper s(env, js);
+ XBT_ERROR("%s", s.value);
}
JNIEXPORT void JNICALL Java_org_simgrid_msg_Msg_critical(JNIEnv* env, jclass, jstring js)
{
- const char *s = env->GetStringUTFChars(js, 0);
- XBT_CRITICAL("%s", s);
- env->ReleaseStringUTFChars(js, s);
+ jstring_wrapper s(env, js);
+ XBT_CRITICAL("%s", s.value);
}
static void java_main(int argc, char* argv[]);
JNIEXPORT void JNICALL Java_org_simgrid_msg_Msg_deployApplication(JNIEnv* env, jclass, jstring jdeploymentFile)
{
- const char *deploymentFile = env->GetStringUTFChars(jdeploymentFile, 0);
+ jstring_wrapper deploymentFile(env, jdeploymentFile);
simgrid_register_default(java_main);
simgrid_load_deployment(deploymentFile);
sg_host_energy_plugin_init();
}
-JNIEXPORT void JNICALL Java_org_simgrid_msg_Msg_fileSystemInit()
-{
- sg_storage_file_system_init();
-}
-
JNIEXPORT void JNICALL Java_org_simgrid_msg_Msg_loadInit() {
sg_host_load_plugin_init();
}
if (env->ExceptionOccurred()) {
XBT_DEBUG("Something went wrong in this Java actor, forget about it.");
env->ExceptionClear();
- XBT_ATTRIB_UNUSED jint error = __java_vm->DetachCurrentThread();
- xbt_assert(error == JNI_OK, "Cannot detach failing thread");
+ xbt_assert(__java_vm->DetachCurrentThread() == JNI_OK, "Cannot detach failing thread");
simgrid::ForcefulKillException::do_throw();
}
}
static void java_main(int argc, char* argv[])
{
JNIEnv *env = get_current_thread_env();
- simgrid::kernel::context::JavaContext* context =
- static_cast<simgrid::kernel::context::JavaContext*>(simgrid::kernel::context::Context::self());
+ auto* context = static_cast<simgrid::kernel::context::JavaContext*>(simgrid::kernel::context::Context::self());
//Change the "." in class name for "/".
std::string arg0 = argv[0];
//Retrieve the name of the process.
jstring jname = env->NewStringUTF(argv[0]);
//Build the arguments
- jobjectArray args = static_cast<jobjectArray>(env->NewObjectArray(argc - 1, env->FindClass("java/lang/String"),
- env->NewStringUTF("")));
+ auto args = static_cast<jobjectArray>(
+ env->NewObjectArray(argc - 1, env->FindClass("java/lang/String"), env->NewStringUTF("")));
for (int i = 1; i < argc; i++)
env->SetObjectArrayElement(args,i - 1, env->NewStringUTF(argv[i]));
//Retrieve the host for the process.
void java_main_jprocess(jobject jprocess)
{
JNIEnv *env = get_current_thread_env();
- JavaContext* context = static_cast<JavaContext*>(Context::self());
+ auto* context = static_cast<JavaContext*>(Context::self());
context->jprocess_ = jprocess;
jprocess_bind(context->jprocess_, sg_actor_self(), env);