Path: blob/aarch64-shenandoah-jdk8u272-b10/hotspot/test/runtime/6929067/invoke.c
32284 views
#include <assert.h>1#include <jni.h>2#include <alloca.h>34#include <pthread.h>56union env_union7{8void *void_env;9JNIEnv *jni_env;10};1112union env_union tmp;13JNIEnv* env;14JavaVM* jvm;15JavaVMInitArgs vm_args;16JavaVMOption options[1];17jclass class_id;18jmethodID method_id;19jint result;2021long product(unsigned long n, unsigned long m) {22if (m == 1) {23return n;24} else {25int *p = alloca(sizeof (int));26*p = n;27return product (n, m-1) + *p;28}29}3031void *32floobydust (void *p)33{34(*jvm)->AttachCurrentThread(jvm, &tmp.void_env, NULL);35env = tmp.jni_env;3637class_id = (*env)->FindClass (env, "T");38assert (class_id);3940method_id = (*env)->GetStaticMethodID (env, class_id, "printIt", "()V");41assert (method_id);4243(*env)->CallStaticVoidMethod (env, class_id, method_id, NULL);4445(*jvm)->DetachCurrentThread(jvm);4647printf("%ld\n", product(5000,5000));4849(*jvm)->AttachCurrentThread(jvm, &tmp.void_env, NULL);50env = tmp.jni_env;5152class_id = (*env)->FindClass (env, "T");53assert (class_id);5455method_id = (*env)->GetStaticMethodID (env, class_id, "printIt", "()V");56assert (method_id);5758(*env)->CallStaticVoidMethod (env, class_id, method_id, NULL);5960(*jvm)->DetachCurrentThread(jvm);6162printf("%ld\n", product(5000,5000));6364return NULL;65}6667int68main (int argc, const char** argv)69{70options[0].optionString = "-Xss320k";7172vm_args.version = JNI_VERSION_1_2;73vm_args.ignoreUnrecognized = JNI_TRUE;74vm_args.options = options;75vm_args.nOptions = 1;7677result = JNI_CreateJavaVM (&jvm, &tmp.void_env, &vm_args);78assert (result >= 0);7980env = tmp.jni_env;8182floobydust (NULL);8384pthread_t thr;85pthread_create (&thr, NULL, floobydust, NULL);86pthread_join (thr, NULL);8788return 0;89}909192