X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/b5460be431061e47e22509daff9cb6e8e7e3fd5b..3af9dcb5714db015a7038a58701b2b453f52c6ca:/src/bindings/java/smx_context_java.c diff --git a/src/bindings/java/smx_context_java.c b/src/bindings/java/smx_context_java.c index 92005a4550..9071f649a6 100644 --- a/src/bindings/java/smx_context_java.c +++ b/src/bindings/java/smx_context_java.c @@ -1,6 +1,6 @@ /* context_java - implementation of context switching for java threads */ -/* Copyright (c) 2009, 2010, 2012. The SimGrid Team. +/* Copyright (c) 2009-2010, 2012-2013. The SimGrid Team. * All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it @@ -111,18 +111,23 @@ static void* smx_ctx_java_thread_run(void *data) { (*env)->SetLongField(env, context->jprocess, jprocess_field_Process_bind, (intptr_t)process); } - xbt_assert((context->jprocess != NULL), "Process not created..."); - //wait for the process to be able to begin - //TODO: Cache it + + // Adrien, ugly path, just to bypass creation of context at low levels + // (i.e such as for the VM migration for instance) + if(context->jprocess != NULL){ + xbt_assert((context->jprocess != NULL), "Process not created..."); + //wait for the process to be able to begin + //TODO: Cache it jfieldID jprocess_field_Process_startTime = jxbt_get_sfield(env, "org/simgrid/msg/Process", "startTime", "D"); - jdouble startTime = (*env)->GetDoubleField(env, context->jprocess, jprocess_field_Process_startTime); - if (startTime > MSG_get_clock()) { - MSG_process_sleep(startTime - MSG_get_clock()); + jdouble startTime = (*env)->GetDoubleField(env, context->jprocess, jprocess_field_Process_startTime); + if (startTime > MSG_get_clock()) { + MSG_process_sleep(startTime - MSG_get_clock()); + } + //Execution of the "run" method. + jmethodID id = jxbt_get_smethod(env, "org/simgrid/msg/Process", "run", "()V"); + xbt_assert( (id != NULL), "Method not found..."); + (*env)->CallVoidMethod(env, context->jprocess, id); } - //Execution of the "run" method. - jmethodID id = jxbt_get_smethod(env, "org/simgrid/msg/Process", "run", "()V"); - xbt_assert( (id != NULL), "Method not found..."); - (*env)->CallVoidMethod(env, context->jprocess, id); smx_ctx_java_stop((smx_context_t)context); return NULL;