From c9326643bdf057c8e96df1011be4a61f28aeb9d2 Mon Sep 17 00:00:00 2001 From: Martin Quinson Date: Sun, 11 Nov 2018 04:23:03 +0100 Subject: [PATCH] tiny factorizations and doc improvements --- src/bindings/java/jmsg_process.cpp | 7 +++---- src/s4u/s4u_Actor.cpp | 4 +--- src/simix/ActorImpl.cpp | 2 -- 3 files changed, 4 insertions(+), 9 deletions(-) diff --git a/src/bindings/java/jmsg_process.cpp b/src/bindings/java/jmsg_process.cpp index 1d2e22a7d9..5485918808 100644 --- a/src/bindings/java/jmsg_process.cpp +++ b/src/bindings/java/jmsg_process.cpp @@ -73,16 +73,15 @@ JNIEXPORT void JNICALL Java_org_simgrid_msg_Process_create(JNIEnv* env, jobject /* Actually build the MSG process */ jstring jname = (jstring)env->GetObjectField(jprocess, jprocess_field_Process_name); const char* name = env->GetStringUTFChars(jname, 0); + simgrid::simix::ActorCode function = [jprocess]() { simgrid::kernel::context::java_main_jprocess(jprocess); }; smx_actor_t actor = - simcall_process_create(name, [jprocess]() { simgrid::kernel::context::java_main_jprocess(jprocess); }, - /*data*/ nullptr, jhost_get_native(env, jhost), /* properties*/ nullptr); + simcall_process_create(name, function, /*data*/ nullptr, jhost_get_native(env, jhost), /* properties*/ nullptr); MSG_process_yield(); env->ReleaseStringUTFChars(jname, name); /* Retrieve the kill time from the process */ - jdouble jkill = env->GetDoubleField(jprocess, jprocess_field_Process_killTime); - actor->ciface()->set_kill_time((double)jkill); + actor->ciface()->set_kill_time((double)env->GetDoubleField(jprocess, jprocess_field_Process_killTime)); /* sets the PID and the PPID of the process */ env->SetIntField(jprocess, jprocess_field_Process_pid, (jint)actor->ciface()->get_pid()); diff --git a/src/s4u/s4u_Actor.cpp b/src/s4u/s4u_Actor.cpp index 506841b786..816540bc58 100644 --- a/src/s4u/s4u_Actor.cpp +++ b/src/s4u/s4u_Actor.cpp @@ -47,9 +47,7 @@ ActorPtr Actor::create(std::string name, s4u::Host* host, std::function ActorPtr Actor::create(std::string name, s4u::Host* host, std::string function, std::vector args) { simgrid::simix::ActorCodeFactory& factory = SIMIX_get_actor_code_factory(function); - simgrid::simix::ActorCode code = factory(std::move(args)); - simgrid::kernel::actor::ActorImpl* actor = simcall_process_create(name, std::move(code), nullptr, host, nullptr); - return actor->iface(); + return create(name, host, std::move(factory(std::move(args)))); } void intrusive_ptr_add_ref(Actor* actor) diff --git a/src/simix/ActorImpl.cpp b/src/simix/ActorImpl.cpp index f1ccd3c21a..7c3ee49e3a 100644 --- a/src/simix/ActorImpl.cpp +++ b/src/simix/ActorImpl.cpp @@ -853,8 +853,6 @@ void SIMIX_process_on_exit(smx_actor_t process, std::function * be nullptr. * It can be retrieved with the method ActorImpl::getUserData(). * @param host where the new agent is executed. - * @param argc first argument passed to @a code - * @param argv second argument passed to @a code * @param properties the properties of the process */ smx_actor_t simcall_process_create(std::string name, simgrid::simix::ActorCode code, void* data, sg_host_t host, -- 2.20.1