Example #1
0
File: bc.c Project: crjohns/robovm
Env* _bcAttachThreadFromCallback(void) {
    Env* env = NULL;
    if (rvmAttachCurrentThread(vm, &env, NULL, NULL) != JNI_OK) {
        rvmAbort("Failed to attach thread in callback");
    }
    return env;
}
Example #2
0
static jint AttachCurrentThread(JavaVM* vm, void** penv, void* args) {
    char* name = NULL;
    Object* group = NULL;
    if (args) {
        name = ((JavaVMAttachArgs*) args)->name;
        group = (Object*) ((JavaVMAttachArgs*) group)->name;
    }
    return rvmAttachCurrentThread((VM*) vm, (Env**) penv, name, group);
}
Example #3
0
jboolean rvmDestroyVM(VM* vm) {
    Env* env;
    if (JNI_OK != rvmAttachCurrentThread(vm, &env, NULL, NULL) ) {
        WARN("rvmDestroy() failed to attach current thread.");
        return FALSE;
    }
    Object* throwable = rvmExceptionOccurred(env);
    rvmDetachCurrentThread(env->vm, TRUE, FALSE);

    rvmJoinNonDaemonThreads(env);

    return throwable == NULL ? TRUE : FALSE;
}