annotate 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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1320
3b3d12e645e7 6929067: Stack guard pages should be removed when thread is detached
coleenp
parents:
diff changeset
1 #include <assert.h>
3b3d12e645e7 6929067: Stack guard pages should be removed when thread is detached
coleenp
parents:
diff changeset
2 #include <jni.h>
3b3d12e645e7 6929067: Stack guard pages should be removed when thread is detached
coleenp
parents:
diff changeset
3 #include <alloca.h>
3b3d12e645e7 6929067: Stack guard pages should be removed when thread is detached
coleenp
parents:
diff changeset
4
3b3d12e645e7 6929067: Stack guard pages should be removed when thread is detached
coleenp
parents:
diff changeset
5 #include <pthread.h>
3b3d12e645e7 6929067: Stack guard pages should be removed when thread is detached
coleenp
parents:
diff changeset
6
3b3d12e645e7 6929067: Stack guard pages should be removed when thread is detached
coleenp
parents:
diff changeset
7 union env_union
3b3d12e645e7 6929067: Stack guard pages should be removed when thread is detached
coleenp
parents:
diff changeset
8 {
3b3d12e645e7 6929067: Stack guard pages should be removed when thread is detached
coleenp
parents:
diff changeset
9 void *void_env;
3b3d12e645e7 6929067: Stack guard pages should be removed when thread is detached
coleenp
parents:
diff changeset
10 JNIEnv *jni_env;
3b3d12e645e7 6929067: Stack guard pages should be removed when thread is detached
coleenp
parents:
diff changeset
11 };
3b3d12e645e7 6929067: Stack guard pages should be removed when thread is detached
coleenp
parents:
diff changeset
12
3b3d12e645e7 6929067: Stack guard pages should be removed when thread is detached
coleenp
parents:
diff changeset
13 union env_union tmp;
3b3d12e645e7 6929067: Stack guard pages should be removed when thread is detached
coleenp
parents:
diff changeset
14 JNIEnv* env;
3b3d12e645e7 6929067: Stack guard pages should be removed when thread is detached
coleenp
parents:
diff changeset
15 JavaVM* jvm;
3b3d12e645e7 6929067: Stack guard pages should be removed when thread is detached
coleenp
parents:
diff changeset
16 JavaVMInitArgs vm_args;
3b3d12e645e7 6929067: Stack guard pages should be removed when thread is detached
coleenp
parents:
diff changeset
17 JavaVMOption options[1];
3b3d12e645e7 6929067: Stack guard pages should be removed when thread is detached
coleenp
parents:
diff changeset
18 jclass class_id;
3b3d12e645e7 6929067: Stack guard pages should be removed when thread is detached
coleenp
parents:
diff changeset
19 jmethodID method_id;
3b3d12e645e7 6929067: Stack guard pages should be removed when thread is detached
coleenp
parents:
diff changeset
20 jint result;
3b3d12e645e7 6929067: Stack guard pages should be removed when thread is detached
coleenp
parents:
diff changeset
21
3b3d12e645e7 6929067: Stack guard pages should be removed when thread is detached
coleenp
parents:
diff changeset
22 long product(unsigned long n, unsigned long m) {
3b3d12e645e7 6929067: Stack guard pages should be removed when thread is detached
coleenp
parents:
diff changeset
23 if (m == 1) {
3b3d12e645e7 6929067: Stack guard pages should be removed when thread is detached
coleenp
parents:
diff changeset
24 return n;
3b3d12e645e7 6929067: Stack guard pages should be removed when thread is detached
coleenp
parents:
diff changeset
25 } else {
3b3d12e645e7 6929067: Stack guard pages should be removed when thread is detached
coleenp
parents:
diff changeset
26 int *p = alloca(sizeof (int));
3b3d12e645e7 6929067: Stack guard pages should be removed when thread is detached
coleenp
parents:
diff changeset
27 *p = n;
3b3d12e645e7 6929067: Stack guard pages should be removed when thread is detached
coleenp
parents:
diff changeset
28 return product (n, m-1) + *p;
3b3d12e645e7 6929067: Stack guard pages should be removed when thread is detached
coleenp
parents:
diff changeset
29 }
3b3d12e645e7 6929067: Stack guard pages should be removed when thread is detached
coleenp
parents:
diff changeset
30 }
3b3d12e645e7 6929067: Stack guard pages should be removed when thread is detached
coleenp
parents:
diff changeset
31
3b3d12e645e7 6929067: Stack guard pages should be removed when thread is detached
coleenp
parents:
diff changeset
32 void *
3b3d12e645e7 6929067: Stack guard pages should be removed when thread is detached
coleenp
parents:
diff changeset
33 floobydust (void *p)
3b3d12e645e7 6929067: Stack guard pages should be removed when thread is detached
coleenp
parents:
diff changeset
34 {
3b3d12e645e7 6929067: Stack guard pages should be removed when thread is detached
coleenp
parents:
diff changeset
35 (*jvm)->AttachCurrentThread(jvm, &tmp.void_env, NULL);
3b3d12e645e7 6929067: Stack guard pages should be removed when thread is detached
coleenp
parents:
diff changeset
36 env = tmp.jni_env;
3b3d12e645e7 6929067: Stack guard pages should be removed when thread is detached
coleenp
parents:
diff changeset
37
3b3d12e645e7 6929067: Stack guard pages should be removed when thread is detached
coleenp
parents:
diff changeset
38 class_id = (*env)->FindClass (env, "T");
3b3d12e645e7 6929067: Stack guard pages should be removed when thread is detached
coleenp
parents:
diff changeset
39 assert (class_id);
3b3d12e645e7 6929067: Stack guard pages should be removed when thread is detached
coleenp
parents:
diff changeset
40
3b3d12e645e7 6929067: Stack guard pages should be removed when thread is detached
coleenp
parents:
diff changeset
41 method_id = (*env)->GetStaticMethodID (env, class_id, "printIt", "()V");
3b3d12e645e7 6929067: Stack guard pages should be removed when thread is detached
coleenp
parents:
diff changeset
42 assert (method_id);
3b3d12e645e7 6929067: Stack guard pages should be removed when thread is detached
coleenp
parents:
diff changeset
43
3b3d12e645e7 6929067: Stack guard pages should be removed when thread is detached
coleenp
parents:
diff changeset
44 (*env)->CallStaticVoidMethod (env, class_id, method_id, NULL);
3b3d12e645e7 6929067: Stack guard pages should be removed when thread is detached
coleenp
parents:
diff changeset
45
3b3d12e645e7 6929067: Stack guard pages should be removed when thread is detached
coleenp
parents:
diff changeset
46 (*jvm)->DetachCurrentThread(jvm);
3b3d12e645e7 6929067: Stack guard pages should be removed when thread is detached
coleenp
parents:
diff changeset
47
3b3d12e645e7 6929067: Stack guard pages should be removed when thread is detached
coleenp
parents:
diff changeset
48 printf("%ld\n", product(5000,5000));
3b3d12e645e7 6929067: Stack guard pages should be removed when thread is detached
coleenp
parents:
diff changeset
49
3b3d12e645e7 6929067: Stack guard pages should be removed when thread is detached
coleenp
parents:
diff changeset
50 (*jvm)->AttachCurrentThread(jvm, &tmp.void_env, NULL);
3b3d12e645e7 6929067: Stack guard pages should be removed when thread is detached
coleenp
parents:
diff changeset
51 env = tmp.jni_env;
3b3d12e645e7 6929067: Stack guard pages should be removed when thread is detached
coleenp
parents:
diff changeset
52
3b3d12e645e7 6929067: Stack guard pages should be removed when thread is detached
coleenp
parents:
diff changeset
53 class_id = (*env)->FindClass (env, "T");
3b3d12e645e7 6929067: Stack guard pages should be removed when thread is detached
coleenp
parents:
diff changeset
54 assert (class_id);
3b3d12e645e7 6929067: Stack guard pages should be removed when thread is detached
coleenp
parents:
diff changeset
55
3b3d12e645e7 6929067: Stack guard pages should be removed when thread is detached
coleenp
parents:
diff changeset
56 method_id = (*env)->GetStaticMethodID (env, class_id, "printIt", "()V");
3b3d12e645e7 6929067: Stack guard pages should be removed when thread is detached
coleenp
parents:
diff changeset
57 assert (method_id);
3b3d12e645e7 6929067: Stack guard pages should be removed when thread is detached
coleenp
parents:
diff changeset
58
3b3d12e645e7 6929067: Stack guard pages should be removed when thread is detached
coleenp
parents:
diff changeset
59 (*env)->CallStaticVoidMethod (env, class_id, method_id, NULL);
3b3d12e645e7 6929067: Stack guard pages should be removed when thread is detached
coleenp
parents:
diff changeset
60
3b3d12e645e7 6929067: Stack guard pages should be removed when thread is detached
coleenp
parents:
diff changeset
61 (*jvm)->DetachCurrentThread(jvm);
3b3d12e645e7 6929067: Stack guard pages should be removed when thread is detached
coleenp
parents:
diff changeset
62
3b3d12e645e7 6929067: Stack guard pages should be removed when thread is detached
coleenp
parents:
diff changeset
63 printf("%ld\n", product(5000,5000));
3b3d12e645e7 6929067: Stack guard pages should be removed when thread is detached
coleenp
parents:
diff changeset
64
3b3d12e645e7 6929067: Stack guard pages should be removed when thread is detached
coleenp
parents:
diff changeset
65 return NULL;
3b3d12e645e7 6929067: Stack guard pages should be removed when thread is detached
coleenp
parents:
diff changeset
66 }
3b3d12e645e7 6929067: Stack guard pages should be removed when thread is detached
coleenp
parents:
diff changeset
67
3b3d12e645e7 6929067: Stack guard pages should be removed when thread is detached
coleenp
parents:
diff changeset
68 int
3b3d12e645e7 6929067: Stack guard pages should be removed when thread is detached
coleenp
parents:
diff changeset
69 main (int argc, const char** argv)
3b3d12e645e7 6929067: Stack guard pages should be removed when thread is detached
coleenp
parents:
diff changeset
70 {
3b3d12e645e7 6929067: Stack guard pages should be removed when thread is detached
coleenp
parents:
diff changeset
71 options[0].optionString = "-Xss320k";
3b3d12e645e7 6929067: Stack guard pages should be removed when thread is detached
coleenp
parents:
diff changeset
72
3b3d12e645e7 6929067: Stack guard pages should be removed when thread is detached
coleenp
parents:
diff changeset
73 vm_args.version = JNI_VERSION_1_2;
3b3d12e645e7 6929067: Stack guard pages should be removed when thread is detached
coleenp
parents:
diff changeset
74 vm_args.ignoreUnrecognized = JNI_TRUE;
3b3d12e645e7 6929067: Stack guard pages should be removed when thread is detached
coleenp
parents:
diff changeset
75 vm_args.options = options;
3b3d12e645e7 6929067: Stack guard pages should be removed when thread is detached
coleenp
parents:
diff changeset
76 vm_args.nOptions = 1;
3b3d12e645e7 6929067: Stack guard pages should be removed when thread is detached
coleenp
parents:
diff changeset
77
3b3d12e645e7 6929067: Stack guard pages should be removed when thread is detached
coleenp
parents:
diff changeset
78 result = JNI_CreateJavaVM (&jvm, &tmp.void_env, &vm_args);
3b3d12e645e7 6929067: Stack guard pages should be removed when thread is detached
coleenp
parents:
diff changeset
79 assert (result >= 0);
3b3d12e645e7 6929067: Stack guard pages should be removed when thread is detached
coleenp
parents:
diff changeset
80
3b3d12e645e7 6929067: Stack guard pages should be removed when thread is detached
coleenp
parents:
diff changeset
81 env = tmp.jni_env;
3b3d12e645e7 6929067: Stack guard pages should be removed when thread is detached
coleenp
parents:
diff changeset
82
3b3d12e645e7 6929067: Stack guard pages should be removed when thread is detached
coleenp
parents:
diff changeset
83 floobydust (NULL);
3b3d12e645e7 6929067: Stack guard pages should be removed when thread is detached
coleenp
parents:
diff changeset
84
3b3d12e645e7 6929067: Stack guard pages should be removed when thread is detached
coleenp
parents:
diff changeset
85 pthread_t thr;
3b3d12e645e7 6929067: Stack guard pages should be removed when thread is detached
coleenp
parents:
diff changeset
86 pthread_create (&thr, NULL, floobydust, NULL);
3b3d12e645e7 6929067: Stack guard pages should be removed when thread is detached
coleenp
parents:
diff changeset
87 pthread_join (thr, NULL);
3b3d12e645e7 6929067: Stack guard pages should be removed when thread is detached
coleenp
parents:
diff changeset
88
3b3d12e645e7 6929067: Stack guard pages should be removed when thread is detached
coleenp
parents:
diff changeset
89 return 0;
3b3d12e645e7 6929067: Stack guard pages should be removed when thread is detached
coleenp
parents:
diff changeset
90 }