#include <locale.h>
#include "smx_context_java.h"
+#include "smx_context_cojava.h"
#include "jmsg_process.h"
XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(jmsg);
-static JavaVM *__java_vm = NULL;
-
+JavaVM *__java_vm = NULL;
JavaVM *get_java_VM(void)
{
jstring jval;
const char *tmp;
- smx_factory_initializer_to_use = SIMIX_ctx_java_factory_init;
+ (*env)->GetJavaVM(env, &__java_vm);
+
+ if ((*env)->FindClass(env, "java/dyn/Coroutine")) {
+ XBT_VERB("Using Coroutines");
+ smx_factory_initializer_to_use = SIMIX_ctx_cojava_factory_init;
+ }
+ else {
+ XBT_VERB("Using java threads");
+ smx_factory_initializer_to_use = SIMIX_ctx_java_factory_init;
+ }
+ jthrowable exc = (*env)->ExceptionOccurred(env);
+ if (exc) {
+ (*env)->ExceptionClear(env);
+ }
setlocale(LC_NUMERIC,"C");
free(argv[index]);
free(argv);
-
- (*env)->GetJavaVM(env, &__java_vm);
}
JNIEXPORT void JNICALL
(*env)->ReleaseStringUTFChars(env, jplatformFile, platformFile);
}
-
+JNIEXPORT void JNICALL
+Java_org_simgrid_msg_Msg_debug(JNIEnv * env, jclass cls, jstring js)
+{
+ const char *s = (*env)->GetStringUTFChars(env, js, 0);
+ XBT_DEBUG("%s", s);
+ (*env)->ReleaseStringUTFChars(env, js, s);
+}
JNIEXPORT void JNICALL
Java_org_simgrid_msg_Msg_info(JNIEnv * env, jclass cls, jstring js)
{
/* sets the PID and the PPID of the process */
(*env)->SetIntField(env, jprocess, jprocess_field_Process_pid,(jint) MSG_process_get_PID(process));
(*env)->SetIntField(env, jprocess, jprocess_field_Process_ppid, (jint) MSG_process_get_PPID(process));
-
jprocess_bind(jprocess, process, env);
return 0;