diff options
Diffstat (limited to 'libjava/testsuite/libjava.jvmti')
-rw-r--r-- | libjava/testsuite/libjava.jvmti/getallthreads.h | 35 | ||||
-rw-r--r-- | libjava/testsuite/libjava.jvmti/getallthreads.jar | bin | 0 -> 1228 bytes | |||
-rw-r--r-- | libjava/testsuite/libjava.jvmti/getallthreads.java | 80 | ||||
-rw-r--r-- | libjava/testsuite/libjava.jvmti/getallthreads.out | 23 | ||||
-rw-r--r-- | libjava/testsuite/libjava.jvmti/natgetallthreads.cc | 55 |
5 files changed, 193 insertions, 0 deletions
diff --git a/libjava/testsuite/libjava.jvmti/getallthreads.h b/libjava/testsuite/libjava.jvmti/getallthreads.h new file mode 100644 index 0000000..7579892f --- /dev/null +++ b/libjava/testsuite/libjava.jvmti/getallthreads.h @@ -0,0 +1,35 @@ +// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*- + +#ifndef __getallthreads__ +#define __getallthreads__ + +#pragma interface + +#include <java/lang/Thread.h> +#include <gcj/array.h> + +extern "Java" +{ + class getallthreads; +} + +class getallthreads : public ::java::lang::Thread +{ +public: + getallthreads (); + static void do_getallthreads_tests (); + virtual void run (); + virtual void natPlaceholder (); + virtual void natRunner (); + virtual void placeholder (); + virtual void runner (); + static void main (JArray< ::java::lang::String *> *); + static jint thread_num; + static ::java::util::ArrayList *threads; + jint __attribute__((aligned(__alignof__( ::java::lang::Thread )))) ex_frames; + jboolean done; + + static ::java::lang::Class class$; +}; + +#endif /* __getallthreads__ */ diff --git a/libjava/testsuite/libjava.jvmti/getallthreads.jar b/libjava/testsuite/libjava.jvmti/getallthreads.jar Binary files differnew file mode 100644 index 0000000..3e59ccd --- /dev/null +++ b/libjava/testsuite/libjava.jvmti/getallthreads.jar diff --git a/libjava/testsuite/libjava.jvmti/getallthreads.java b/libjava/testsuite/libjava.jvmti/getallthreads.java new file mode 100644 index 0000000..00be3a75 --- /dev/null +++ b/libjava/testsuite/libjava.jvmti/getallthreads.java @@ -0,0 +1,80 @@ +// Test JVMTI GetAllThreads + +import java.util.ArrayList; + +public class getallthreads extends Thread +{ + public static int thread_num; + public static ArrayList threads; + + public int ex_frames; + public boolean done = false; + + public static native void do_getallthreads_tests (); + + public void run () + { + ex_frames = thread_num; + thread_num++; + + if (ex_frames > 0) + { + if ((ex_frames % 2) == 0) + placeholder (); + else + natPlaceholder (); + } + else + runner (); + } + + public native void natPlaceholder (); + public native void natRunner (); + + public void placeholder () + { + ex_frames--; + + if (ex_frames > 0) + { + if ((thread_num % 2) == 0) + placeholder (); + else + natPlaceholder (); + } + else + runner (); + } + + public void runner () + { + done = true; + while (done) + yield (); + } + + public static void main (String[] args) + { + System.out.println ("JVMTI GetAllThreads tests"); + threads = new ArrayList (20); + + getallthreads t; + + for (int i = 0; i < 20; i++) + { + t = new getallthreads (); + threads.add (t); + t.start (); + while (!t.done) + yield (); + } + + do_getallthreads_tests (); + + for (int i = 0; i < 20; i++) + { + t = (getallthreads) threads.get(i); + t.done = false; + } + } +} diff --git a/libjava/testsuite/libjava.jvmti/getallthreads.out b/libjava/testsuite/libjava.jvmti/getallthreads.out new file mode 100644 index 0000000..8e05c4a --- /dev/null +++ b/libjava/testsuite/libjava.jvmti/getallthreads.out @@ -0,0 +1,23 @@ +JVMTI GetAllThreads tests +Found thread 1 +Found thread 2 +Found thread 3 +Found thread 4 +Found thread 5 +Found thread 6 +Found thread 7 +Found thread 8 +Found thread 9 +Found thread 10 +Found thread 11 +Found thread 12 +Found thread 13 +Found thread 14 +Found thread 15 +Found thread 16 +Found thread 17 +Found thread 18 +Found thread 19 +Found thread 20 +Found thread 21 +Found thread 22 diff --git a/libjava/testsuite/libjava.jvmti/natgetallthreads.cc b/libjava/testsuite/libjava.jvmti/natgetallthreads.cc new file mode 100644 index 0000000..9c4d69c --- /dev/null +++ b/libjava/testsuite/libjava.jvmti/natgetallthreads.cc @@ -0,0 +1,55 @@ +#include <gcj/cni.h> + +#include <jvm.h> +#include <jvmti.h> +#include <stdio.h> + +#include "jvmti-int.h" +#include "getallthreads.h" + +void +getallthreads::natPlaceholder () +{ + ex_frames--; + + if (ex_frames > 0) + { + if ((getallthreads::thread_num % 2) == 0) + placeholder (); + else + natPlaceholder (); + } + else + natRunner (); +} + +void +getallthreads::natRunner () +{ + done = true; + while (done) + yield (); +} + +void +getallthreads::do_getallthreads_tests () +{ + jvmtiEnv *env; + JavaVM *vm = _Jv_GetJavaVM (); + vm->GetEnv (reinterpret_cast<void **> (&env), JVMTI_VERSION_1_0); + + jint num_threads; + jthread *thread_arr; + + jvmtiError jerr = env->GetAllThreads (&num_threads, &thread_arr); + if (jerr != JVMTI_ERROR_NONE) + { + printf ("Test Failed, JVMTI Error!\n"); + return; + } + env->Deallocate (reinterpret_cast<unsigned char *> (thread_arr)); + + for (int i = 0; i < num_threads; i++) + printf ("Found thread %d\n", i+1 ); +} + |