Signed-off-by: Tomek Grabiec <[email protected]>
---
.gitignore | 2 +
Makefile | 8 +++++-
regression/jni/Makefile | 17 +++++++++++++
regression/jni/jvm_JNITest.cpp | 14 ++++++++++
regression/jvm/JNITest.java | 53 ++++++++++++++++++++++++++++++++++++++++
regression/run-suite.sh | 3 ++
6 files changed, 96 insertions(+), 1 deletions(-)
create mode 100644 regression/jni/Makefile
create mode 100644 regression/jni/jvm_JNITest.cpp
create mode 100644 regression/jvm/JNITest.java
diff --git a/.gitignore b/.gitignore
index 71ca5b0..96439a9 100644
--- a/.gitignore
+++ b/.gitignore
@@ -10,6 +10,7 @@
# Generated include files
#
include/vm/arch.h
+regression/jni/jvm_JNITest.h
#
# Generated source files
@@ -31,6 +32,7 @@ test/arch-x86/x86-test-runner
test/jit/jit-test-runner
test/vm/vm-test-runner
tools/classpath-config
+regression/jni/libjnitest.so
#
# ctags generated files
diff --git a/Makefile b/Makefile
index 1cdc587..361f327 100644
--- a/Makefile
+++ b/Makefile
@@ -244,6 +244,7 @@ REGRESSION_TEST_SUITE_CLASSES = \
regression/jvm/InterfaceInheritanceTest.java \
regression/jvm/InvokeinterfaceTest.java \
regression/jvm/InvokestaticPatchingTest.java \
+ regression/jvm/JNITest.java \
regression/jvm/LoadConstantsTest.java \
regression/jvm/LongArithmeticExceptionsTest.java \
regression/jvm/LongArithmeticTest.java \
@@ -273,6 +274,10 @@ JASMIN_REGRESSION_TEST_SUITE_CLASSES = \
regression/jvm/SubroutineTest.j \
regression/jvm/WideTest.j
+
+jni-regression: java-regression
+ make -C regression/jni
+
java-regression: FORCE
$(E) " JAVAC"
$(Q) $(JAVAC) -cp $(GLIBJ):regression $(JAVAC_OPTS) -d regression
$(REGRESSION_TEST_SUITE_CLASSES)
@@ -291,7 +296,7 @@ lib: $(CLASSPATH_CONFIG)
make -C lib/ JAVAC=$(JAVAC) GLIBJ=$(GLIBJ)
.PHONY: lib
-regression: monoburg $(CLASSPATH_CONFIG) $(PROGRAM) java-regression
jasmin-regression
+regression: monoburg $(CLASSPATH_CONFIG) $(PROGRAM) java-regression
jasmin-regression jni-regression
$(E) " REGRESSION"
$(Q) cd regression && /bin/bash run-suite.sh $(JAVA_OPTS)
.PHONY: regression
@@ -318,6 +323,7 @@ clean:
$(Q) - make -C test/vm/ clean
$(Q) - make -C test/jit/ clean
$(Q) - make -C test/arch-$(ARCH)/ clean
+ $(Q) - make -C regression/jni/ clean
.PHONY: clean
INSTALL_PREFIX ?= $(HOME)
diff --git a/regression/jni/Makefile b/regression/jni/Makefile
new file mode 100644
index 0000000..339d93d
--- /dev/null
+++ b/regression/jni/Makefile
@@ -0,0 +1,17 @@
+all: libjnitest.so
+
+CXX := g++
+JAVAH := javah
+
+jvm_JNITest.h:
+ $(E) " JAVAH " $@
+ $(Q) $(JAVAH) -jni -classpath .. jvm.JNITest
+
+libjnitest.so: jvm_JNITest.cpp jvm_JNITest.h
+ $(E) " CXX " $@
+ $(Q) $(CXX) -I`../../tools/classpath-config`/include -g
-fomit-frame-pointer -o $@ -shared jvm_JNITest.cpp
+
+clean:
+ rm -f libjnitest.so
+ rm -f jvm_JNITest.h
+.PHONY: clean
diff --git a/regression/jni/jvm_JNITest.cpp b/regression/jni/jvm_JNITest.cpp
new file mode 100644
index 0000000..f1dd5dd
--- /dev/null
+++ b/regression/jni/jvm_JNITest.cpp
@@ -0,0 +1,14 @@
+#include "jvm_JNITest.h"
+
+/*
+ * Class: jvm_JNITest
+ * Method: nativeTestThrow
+ * Signature: ()V
+ */
+JNIEXPORT void JNICALL Java_jvm_JNITest_nativeTestThrow
+ (JNIEnv *env, jclass clazz)
+{
+ jclass e_clazz = env->FindClass("java/lang/Exception");
+ env->ThrowNew(e_clazz, "test");
+ env->ThrowNew(e_clazz, "test2");
+}
diff --git a/regression/jvm/JNITest.java b/regression/jvm/JNITest.java
new file mode 100644
index 0000000..fa11ae1
--- /dev/null
+++ b/regression/jvm/JNITest.java
@@ -0,0 +1,53 @@
+/*
+ * Copyright (C) 2009 Tomasz Grabiec
+ *
+ * This file is released under the GPL version 2 with the following
+ * clarification and special exception:
+ *
+ * Linking this library statically or dynamically with other modules is
+ * making a combined work based on this library. Thus, the terms and
+ * conditions of the GNU General Public License cover the whole
+ * combination.
+ *
+ * As a special exception, the copyright holders of this library give you
+ * permission to link this library with independent modules to produce an
+ * executable, regardless of the license terms of these independent
+ * modules, and to copy and distribute the resulting executable under terms
+ * of your choice, provided that you also meet, for each linked independent
+ * module, the terms and conditions of the license of that module. An
+ * independent module is a module which is not derived from or based on
+ * this library. If you modify this library, you may extend this exception
+ * to your version of the library, but you are not obligated to do so. If
+ * you do not wish to do so, delete this exception statement from your
+ * version.
+ *
+ * Please refer to the file LICENSE for details.
+ */
+package jvm;
+
+class JNITest extends TestCase {
+ public static native void nativeTestThrow();
+
+ public static void testThrow() {
+ boolean caught = false;
+
+ try {
+ nativeTestThrow();
+ } catch (Exception e) {
+ assertObjectEquals("test2", e.getMessage());
+ caught = true;
+ }
+
+ assertTrue(caught);
+ }
+
+ public static void main(String []args) {
+ try {
+ System.loadLibrary("jnitest");
+ } catch (Exception e) {
+ fail();
+ }
+
+ testThrow();
+ }
+}
diff --git a/regression/run-suite.sh b/regression/run-suite.sh
index c3f6f7e..5ae8b52 100755
--- a/regression/run-suite.sh
+++ b/regression/run-suite.sh
@@ -23,6 +23,8 @@ if test x"$GNU_CLASSPATH_ROOT" = x -o ! -d
"$GNU_CLASSPATH_ROOT"; then
exit
fi
+LD_LIBRARY_PATH=$LD_LIBRARY_PATH:`pwd`/jni/
+
while [ "$#" -ge 1 ]; do
case "$1" in
-t)
@@ -66,6 +68,7 @@ if [ -z "$CLASS_LIST" ]; then
run_java jvm.InterfaceInheritanceTest 0
run_java jvm.InvokeinterfaceTest 0
run_java jvm.InvokestaticPatchingTest 0
+ run_java jvm.JNITest 0
run_java jvm.LoadConstantsTest 0
run_java jvm.LongArithmeticExceptionsTest 0
run_java jvm.LongArithmeticTest 0
--
1.6.0.6
------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
trial. Simplify your report design, integration and deployment - and focus on
what you do best, core application coding. Discover what's new with
Crystal Reports now. http://p.sf.net/sfu/bobj-july
_______________________________________________
Jatovm-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jatovm-devel