Mercurial > hg > truffle
view test/runtime/6929067/invoke.c @ 19147:609480dfa0d8
Create ExplodeLoop plugin prototype. Special sort for blocks from bci block map builder for explode loop methods. Graph builder plugin for customizing static field accesses. New Truffle option TruffleExcludeAssertions default true that excludes assertion code from being partial evaluated in the new partial evaluator.
author | Thomas Wuerthinger <thomas.wuerthinger@oracle.com> |
---|---|
date | Thu, 05 Feb 2015 03:25:21 +0100 |
parents | 3b3d12e645e7 |
children |
line wrap: on
line source
#include <assert.h> #include <jni.h> #include <alloca.h> #include <pthread.h> union env_union { void *void_env; JNIEnv *jni_env; }; union env_union tmp; JNIEnv* env; JavaVM* jvm; JavaVMInitArgs vm_args; JavaVMOption options[1]; jclass class_id; jmethodID method_id; jint result; long product(unsigned long n, unsigned long m) { if (m == 1) { return n; } else { int *p = alloca(sizeof (int)); *p = n; return product (n, m-1) + *p; } } void * floobydust (void *p) { (*jvm)->AttachCurrentThread(jvm, &tmp.void_env, NULL); env = tmp.jni_env; class_id = (*env)->FindClass (env, "T"); assert (class_id); method_id = (*env)->GetStaticMethodID (env, class_id, "printIt", "()V"); assert (method_id); (*env)->CallStaticVoidMethod (env, class_id, method_id, NULL); (*jvm)->DetachCurrentThread(jvm); printf("%ld\n", product(5000,5000)); (*jvm)->AttachCurrentThread(jvm, &tmp.void_env, NULL); env = tmp.jni_env; class_id = (*env)->FindClass (env, "T"); assert (class_id); method_id = (*env)->GetStaticMethodID (env, class_id, "printIt", "()V"); assert (method_id); (*env)->CallStaticVoidMethod (env, class_id, method_id, NULL); (*jvm)->DetachCurrentThread(jvm); printf("%ld\n", product(5000,5000)); return NULL; } int main (int argc, const char** argv) { options[0].optionString = "-Xss320k"; vm_args.version = JNI_VERSION_1_2; vm_args.ignoreUnrecognized = JNI_TRUE; vm_args.options = options; vm_args.nOptions = 1; result = JNI_CreateJavaVM (&jvm, &tmp.void_env, &vm_args); assert (result >= 0); env = tmp.jni_env; floobydust (NULL); pthread_t thr; pthread_create (&thr, NULL, floobydust, NULL); pthread_join (thr, NULL); return 0; }