From 845a4b727a88af8f4008e24e1a02ce49607bd91a Mon Sep 17 00:00:00 2001 From: Matthew Fortune Date: Wed, 13 Jul 2016 21:34:35 +0000 Subject: [PATCH] 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 --- libjava/ChangeLog | 8 +++++ libjava/interpret-run.cc | 2 +- libjava/testsuite/libjava.jar/arraysort.jar | Bin 0 -> 1864 bytes libjava/testsuite/libjava.jar/arraysort.java | 44 ++++++++++++++++++++++++++ libjava/testsuite/libjava.jar/arraysort.out | 10 ++++++ libjava/testsuite/libjava.jar/arraysort.xfail | 1 + 6 files changed, 64 insertions(+), 1 deletion(-) create mode 100644 libjava/testsuite/libjava.jar/arraysort.jar create mode 100644 libjava/testsuite/libjava.jar/arraysort.java create mode 100644 libjava/testsuite/libjava.jar/arraysort.out create mode 100644 libjava/testsuite/libjava.jar/arraysort.xfail diff --git a/libjava/ChangeLog b/libjava/ChangeLog index a3bead2fa9a..06b354d7777 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,11 @@ +2016-07-13 Matthew Fortune + + * 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 * libtool-version: Bump soversion. diff --git a/libjava/interpret-run.cc b/libjava/interpret-run.cc index a4c2d4dab43..6be354eaf5e 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 0000000000000000000000000000000000000000..ee051e45a836f99563e3e15ce748795d01e87e4e GIT binary patch literal 1864 zcwP(eW@h1H00Eo28y*ZufRjOn!Phm!QP3uYfkq@26(v>{=NFZz80sbGBo-Hgjrtdw8@>(G zsL~)`|3eM}wcgxQKZT0^5i`7aB3xyTqDotaQ&Uw#MSMcD>Qd9&NssD3Jz^E+KepNa zl!Y#fa>nGFGw0TRe)cxUe*e9Dj3E;*3nX*VokZ{Iud zMYWU?&r1dCk3Op}l^o-bDLOxqXX38R*>TN|C&k}MTv=u;U?p)G`+DCA& zU7EMK`)ZhRoq5|^3n34q7qaO}zaO3Y(yA`rZ1w&0itOVux9-gTQNHrO`#zJ6zgF#V z>pfPI`Ca$;(zjbbyqnwDrt?u>%IHY+HrlUB(|(P zi^nhAAKW6G)ECG*68csMMQ6mL0uX5;dfFB?0PUNXDQ z%;{SDROlD$24}mL*f*?o^6XDSWiC~Tc+AvX@?IJ>{?^WK2!0HVyBEL+;YW@?B4RK2 zwx4jINNoGGb6a|*@Rf5#ma&jnzw|LQ-|T@Zw_r+jL(*29olXGX!7|a zCKo072l79RU)eEFQ`qYHJmuTX?6+IL$9;Z$eY-cq<{OhP9C~m)H`;z(Gu&25{vXLfjbPmxx3=&D_7t*6aZ zvpQ>GQo1~^xUJ&y5}$v|TAtl#tDI5i=3p7DBfadQP4WkqhE%RP$}dK@REUd@!c8=i33D_8K6qRn;fOwPkRd;ecrccr(e^R|%^ zPmXuHIKHo zY~BB5-T9aZUq`-tkA@FC&Y!LwTc0yGFYm#Pbv-t@pZrSy9(ZV$$(Ip!SMO8kVjs5r ze2Ln4*TT3law3@l2bN<5DYImQrvD*8-uqti8$9l3y{j=m`^%r{& zT$oq&pGWy&aL?+C!ABlHw5*z!^h#v2yd?K=efz)vDi5y`V!q&K)bwOyS&?_g6Pvsc zi)D7Mt*$Sv=RFaYD-HCnxVmLpM(F%3&iTJ$7O#3`G*SKBMBh0IC4J#aU%pwD1ZUk+ zeX}sA_DZ(BsEmVnZNuLyA353#8#yLP9JM*Np`lP~_dC8)=GpJIWN^MS_{fgPE1=@? zTcmSR0+5#i#3IPWrLUu(r<-eVh@P(-yyR@f%rK&-4Y?W&co+`sya#N7h&WuK Sz{&>UurP!IjkwDS;sF4UsK^%p literal 0 HcwPel00001 diff --git a/libjava/testsuite/libjava.jar/arraysort.java b/libjava/testsuite/libjava.jar/arraysort.java new file mode 100644 index 00000000000..56c181dd088 --- /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_COMPARATOR = new Comparator() + { + 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 00000000000..938ce9fd855 --- /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 00000000000..2bbbe562517 --- /dev/null +++ b/libjava/testsuite/libjava.jar/arraysort.xfail @@ -0,0 +1 @@ +main=arraysort -- 2.11.4.GIT