X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/d18e17592e7aabd2cb96fd154858e0a3987d2800..7821a711252f51d66c6bb5eb47e3f6f568f31564:/src/bindings/java/JavaContext.cpp diff --git a/src/bindings/java/JavaContext.cpp b/src/bindings/java/JavaContext.cpp index 19f760108e..54bc03fe57 100644 --- a/src/bindings/java/JavaContext.cpp +++ b/src/bindings/java/JavaContext.cpp @@ -12,18 +12,21 @@ #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)"); namespace simgrid { -namespace java { +namespace kernel { +namespace context { -simgrid::simix::ContextFactory* java_factory() +ContextFactory* java_factory() { XBT_INFO("Using regular java threads."); return new JavaContextFactory(); @@ -42,7 +45,7 @@ JavaContext* JavaContextFactory::self() JavaContext* JavaContextFactory::create_context( std::function code, - void_pfn_smxprocess_t cleanup, smx_process_t process) + void_pfn_smxprocess_t cleanup, smx_actor_t process) { return this->new_context(std::move(code), cleanup, process); } @@ -50,7 +53,7 @@ JavaContext* JavaContextFactory::create_context( void JavaContextFactory::run_all() { xbt_dynar_t processes = SIMIX_process_get_runnable(); - smx_process_t process; + smx_actor_t process; unsigned int cursor; xbt_dynar_foreach(processes, cursor, process) { static_cast(SIMIX_process_get_context(process))->resume(); @@ -59,7 +62,7 @@ void JavaContextFactory::run_all() JavaContext::JavaContext(std::function code, void_pfn_smxprocess_t cleanup_func, - smx_process_t process) + smx_actor_t process) : Context(std::move(code), cleanup_func, process) { static int thread_amount=0; @@ -80,12 +83,9 @@ 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); + xbt_ex new_exception(XBT_THROW_POINT, str); new_exception.category = ex.category; new_exception.value = ex.value; - new_exception.file = __FILE__; - new_exception.line = __LINE__; - new_exception.func = __func__; std::throw_with_nested(std::move(new_exception)); } } else { @@ -137,7 +137,7 @@ void JavaContext::stop() // jxbt_throw_by_name(env, "org/simgrid/msg/ProcessKilledError", bprintf("Process %s killed :) (file smx_context_java.c)", MSG_process_get_name( (msg_process_t)context) )); jxbt_throw_by_name(env, "org/simgrid/msg/ProcessKilledError", bprintf("Process %s killed :) (file JavaContext.cpp)", - simcall_process_get_name(this->process()) )); + this->process()->name.c_str() )); XBT_DEBUG("Trigger a cancel error at the C level"); THROWF(cancel_error, 0, "process cancelled"); } else { @@ -165,5 +165,4 @@ void JavaContext::resume() xbt_os_sem_acquire(this->end); } -} -} +}}} // namespace simgrid::kernel::context