X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/528fa2ce6be027b5428d122666ffc37706155449..fae10815035e4d0d150ff5fdbb7aa8fe25448c57:/src/bindings/java/JavaContext.cpp?ds=sidebyside diff --git a/src/bindings/java/JavaContext.cpp b/src/bindings/java/JavaContext.cpp index c6a3d481ac..8460d04187 100644 --- a/src/bindings/java/JavaContext.cpp +++ b/src/bindings/java/JavaContext.cpp @@ -12,10 +12,12 @@ #include #include #include +#include #include "JavaContext.hpp" #include "jxbt_utilities.h" #include "xbt/dynar.h" #include "../../simix/smx_private.h" + extern JavaVM *__java_vm; XBT_LOG_NEW_DEFAULT_CATEGORY(jmsg, "MSG for Java(TM)"); @@ -29,18 +31,15 @@ simgrid::simix::ContextFactory* java_factory() return new JavaContextFactory(); } -JavaContextFactory::JavaContextFactory() - : ContextFactory("JavaContextFactory") +JavaContextFactory::JavaContextFactory(): ContextFactory("JavaContextFactory") { } -JavaContextFactory::~JavaContextFactory() -{ -} +JavaContextFactory::~JavaContextFactory()=default; JavaContext* JavaContextFactory::self() { - return (JavaContext*) xbt_os_thread_get_extra_data(); + return static_cast(xbt_os_thread_get_extra_data()); } JavaContext* JavaContextFactory::create_context( @@ -83,17 +82,10 @@ JavaContext::JavaContext(std::function code, "Failed to create context #%d. You may want to switch to Java coroutines to increase your limits (error: %s)." "See the Install section of simgrid-java documentation (in doc/install.html) for more on coroutines.", thread_amount, ex.what()); - xbt_ex new_exception(str); - free(str); + xbt_ex new_exception(XBT_THROW_POINT, str); new_exception.category = ex.category; new_exception.value = ex.value; - new_exception.procname = ex.procname; - new_exception.file = ex.file; - new_exception.line = ex.line; - new_exception.func = ex.func; - new_exception.pid = ex.pid; - new_exception.bt = ex.bt; - throw new_exception; + std::throw_with_nested(std::move(new_exception)); } } else { this->thread = nullptr; @@ -113,13 +105,13 @@ JavaContext::~JavaContext() void* JavaContext::wrapper(void *data) { - JavaContext* context = (JavaContext*)data; + JavaContext* context = static_cast(data); xbt_os_thread_set_extra_data(context); //Attach the thread to the JVM JNIEnv *env; XBT_ATTRIB_UNUSED jint error = - __java_vm->AttachCurrentThread((void **) &env, nullptr); + __java_vm->AttachCurrentThread((void **)&env, nullptr); xbt_assert((error == JNI_OK), "The thread could not be attached to the JVM"); context->jenv = get_current_thread_env(); //Wait for the first scheduling round to happen.