/* Context switching within the JVM. */
-/* Copyright (c) 2009-2018. The SimGrid Team. All rights reserved. */
+/* Copyright (c) 2009-2019. 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. */
return new JavaContextFactory();
}
-JavaContextFactory::JavaContextFactory(): ContextFactory("JavaContextFactory")
+JavaContextFactory::JavaContextFactory() : ContextFactory()
{
xbt_binary_name = xbt_strdup("java"); // Used by the backtrace displayer
}
JavaContextFactory::~JavaContextFactory()=default;
-JavaContext* JavaContextFactory::self()
-{
- return static_cast<JavaContext*>(xbt_os_thread_get_extra_data());
-}
-
JavaContext* JavaContextFactory::create_context(std::function<void()> code, void_pfn_smxprocess_t cleanup_fun,
smx_actor_t actor)
{
void JavaContext::start_hook()
{
- xbt_os_thread_set_extra_data(this); // We need to attach it also for maestro, in contrary to our ancestor
+ Context::set_current(this); // We need to attach it also for maestro, in contrary to our ancestor
//Attach the thread to the JVM
JNIEnv *env;
// (as the ones created for the VM migration). The Java exception will not be catched anywhere.
// Bad things happen currently if these actors get killed, unfortunately.
jxbt_throw_by_name(env, "org/simgrid/msg/ProcessKilledError",
- std::string("Process ") + this->process()->get_cname() + " killed from file JavaContext.cpp");
+ std::string("Process ") + this->get_actor()->get_cname() + " killed from file JavaContext.cpp");
// (remember that throwing a java exception from C does not break the C execution path.
// Instead, it marks the exception to be raised when returning to the Java world and
env->DeleteGlobalRef(this->jprocess_);
XBT_ATTRIB_UNUSED jint error = __java_vm->DetachCurrentThread();
xbt_assert((error == JNI_OK), "The thread couldn't be detached.");
- xbt_os_thread_exit(nullptr);
}
}