aboutsummaryrefslogtreecommitdiff
path: root/libjava/testsuite/libjava.jvmti
diff options
context:
space:
mode:
authorKyle Galloway <kgallowa@redhat.com>2007-01-16 15:06:28 +0000
committerKyle Galloway <kgallowa@gcc.gnu.org>2007-01-16 15:06:28 +0000
commit05794ce850979f99c29d11c470ab8fd33dffd065 (patch)
tree8a3866653315bfe7be70d28bf9d7d4f62e0bdc88 /libjava/testsuite/libjava.jvmti
parent878aa8171752ad29ae47099e31fbe3df1dcf3133 (diff)
downloadgcc-05794ce850979f99c29d11c470ab8fd33dffd065.zip
gcc-05794ce850979f99c29d11c470ab8fd33dffd065.tar.gz
gcc-05794ce850979f99c29d11c470ab8fd33dffd065.tar.bz2
jvmti.cc (_Jv_JVMTI_GetAllThreads): New function.
2007-01-16 Kyle Galloway <kgallowa@redhat.com> * jvmti.cc (_Jv_JVMTI_GetAllThreads): New function. * testsuite/libjava.jvmti/getallthreads.java: New test. * testsuite/libjava.jvmti/natgetallthreads.cc: Ditto. * testsuite/libjava.jvmti/getallthreads.out: Ditto. * testsuite/libjava.jvmti/getallthreads.h: Ditto. * testsuite/libjava.jvmti/getallthreads.jar: Ditto. From-SVN: r120827
Diffstat (limited to 'libjava/testsuite/libjava.jvmti')
-rw-r--r--libjava/testsuite/libjava.jvmti/getallthreads.h35
-rw-r--r--libjava/testsuite/libjava.jvmti/getallthreads.jarbin0 -> 1228 bytes
-rw-r--r--libjava/testsuite/libjava.jvmti/getallthreads.java80
-rw-r--r--libjava/testsuite/libjava.jvmti/getallthreads.out23
-rw-r--r--libjava/testsuite/libjava.jvmti/natgetallthreads.cc55
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
new file mode 100644
index 0000000..3e59ccd
--- /dev/null
+++ b/libjava/testsuite/libjava.jvmti/getallthreads.jar
Binary files differ
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 );
+}
+