aboutsummaryrefslogtreecommitdiff
path: root/libjava
diff options
context:
space:
mode:
authorMatthew Fortune <matthew.fortune@imgtec.com>2016-07-13 21:34:35 +0000
committerMatthew Fortune <mpf@gcc.gnu.org>2016-07-13 21:34:35 +0000
commit845a4b727a88af8f4008e24e1a02ce49607bd91a (patch)
treeb789f4dfd03279d4cf8d6a4e9ab01430a7bb766d /libjava
parente383deac8ba094f612386a166239f33752fa5808 (diff)
downloadgcc-845a4b727a88af8f4008e24e1a02ce49607bd91a.zip
gcc-845a4b727a88af8f4008e24e1a02ce49607bd91a.tar.gz
gcc-845a4b727a88af8f4008e24e1a02ce49607bd91a.tar.bz2
Fix the use of FFI closures in the java interpreter for integer returns
libjava/ * interpret-run.cc: Use ffi_arg for FFI integer return types. * testsuite/libjava.jar/arraysort.java: New file. * testsuite/libjava.jar/arraysort.jar: New file. * testsuite/libjava.jar/arraysort.out: New file. * testsuite/libjava.jar/arraysort.xfail: New file. From-SVN: r238311
Diffstat (limited to 'libjava')
-rw-r--r--libjava/ChangeLog8
-rw-r--r--libjava/interpret-run.cc2
-rw-r--r--libjava/testsuite/libjava.jar/arraysort.jarbin0 -> 1864 bytes
-rw-r--r--libjava/testsuite/libjava.jar/arraysort.java44
-rw-r--r--libjava/testsuite/libjava.jar/arraysort.out10
-rw-r--r--libjava/testsuite/libjava.jar/arraysort.xfail1
6 files changed, 64 insertions, 1 deletions
diff --git a/libjava/ChangeLog b/libjava/ChangeLog
index a3bead2..06b354d 100644
--- a/libjava/ChangeLog
+++ b/libjava/ChangeLog
@@ -1,3 +1,11 @@
+2016-07-13 Matthew Fortune <matthew.fortune@imgtec.com>
+
+ * interpret-run.cc: Use ffi_arg for FFI integer return types.
+ * testsuite/libjava.jar/arraysort.java: New file.
+ * testsuite/libjava.jar/arraysort.jar: New file.
+ * testsuite/libjava.jar/arraysort.out: New file.
+ * testsuite/libjava.jar/arraysort.xfail: New file.
+
2016-06-01 Matthias Klose <doko@ubuntu.com>
* libtool-version: Bump soversion.
diff --git a/libjava/interpret-run.cc b/libjava/interpret-run.cc
index a4c2d4d..6be354e 100644
--- a/libjava/interpret-run.cc
+++ b/libjava/interpret-run.cc
@@ -1838,7 +1838,7 @@ details. */
return;
insn_ireturn:
- *(jint *) retp = POPI ();
+ *(ffi_arg *) retp = POPI ();
return;
insn_return:
diff --git a/libjava/testsuite/libjava.jar/arraysort.jar b/libjava/testsuite/libjava.jar/arraysort.jar
new file mode 100644
index 0000000..ee051e4
--- /dev/null
+++ b/libjava/testsuite/libjava.jar/arraysort.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.jar/arraysort.java b/libjava/testsuite/libjava.jar/arraysort.java
new file mode 100644
index 0000000..56c181d
--- /dev/null
+++ b/libjava/testsuite/libjava.jar/arraysort.java
@@ -0,0 +1,44 @@
+import java.util.Arrays;
+import java.util.Comparator;
+
+public class arraysort
+{
+ private static final Comparator<String> STRING_COMPARATOR = new Comparator<String>()
+ {
+ public int compare(String str1, String str2)
+ {
+ return str1.compareTo(str2);
+ }
+ };
+
+ static void dumpArray(String[] strings)
+ {
+ int i;
+
+ for (i = 0 ; i < strings.length ; i++)
+ {
+ System.out.println("[" + i + "] " + strings[i]);
+ }
+ }
+
+ public static void main(String[] args)
+ {
+ String[] strings;
+
+ strings = new String[4];
+
+ strings[0] = "a";
+ strings[1] = "c";
+ strings[2] = "b";
+ strings[3] = "d";
+
+ System.out.println("Array of string, before:");
+ dumpArray(strings);
+
+ Arrays.sort(strings, STRING_COMPARATOR);
+
+ System.out.println("Array of string, after:");
+ dumpArray(strings);
+ }
+}
+
diff --git a/libjava/testsuite/libjava.jar/arraysort.out b/libjava/testsuite/libjava.jar/arraysort.out
new file mode 100644
index 0000000..938ce9f
--- /dev/null
+++ b/libjava/testsuite/libjava.jar/arraysort.out
@@ -0,0 +1,10 @@
+Array of string, before:
+[0] a
+[1] c
+[2] b
+[3] d
+Array of string, after:
+[0] a
+[1] b
+[2] c
+[3] d
diff --git a/libjava/testsuite/libjava.jar/arraysort.xfail b/libjava/testsuite/libjava.jar/arraysort.xfail
new file mode 100644
index 0000000..2bbbe56
--- /dev/null
+++ b/libjava/testsuite/libjava.jar/arraysort.xfail
@@ -0,0 +1 @@
+main=arraysort