Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
In C++, classes don't need a name because they have a class
[simgrid.git] / src / bindings / java / JavaContext.cpp
index 5fe1c0c..c8b6db5 100644 (file)
@@ -1,6 +1,6 @@
 /* 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. */
@@ -27,18 +27,13 @@ ContextFactory* java_factory()
   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)
 {
@@ -58,7 +53,7 @@ JavaContext::JavaContext(std::function<void()> code, void_pfn_smxprocess_t clean
 
 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;
@@ -83,7 +78,7 @@ void JavaContext::stop()
     // (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
@@ -113,7 +108,6 @@ void JavaContext::stop()
     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);
   }
 }