From 14f0f2fc44e8a3facd3398428fd60da6a50e7da4 Mon Sep 17 00:00:00 2001 From: Ben Elliston Date: Wed, 20 Apr 2016 07:08:47 +1000 Subject: libjava.exp (libjava_arguments): Use 'file normalize' rather than the defunct DejaGnu 'absolute' proc. * testsuite/lib/libjava.exp (libjava_arguments): Use 'file normalize' rather than the defunct DejaGnu 'absolute' proc. From-SVN: r235222 --- libjava/ChangeLog | 5 +++++ libjava/testsuite/lib/libjava.exp | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) (limited to 'libjava') diff --git a/libjava/ChangeLog b/libjava/ChangeLog index dc57993..ce6f201 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,8 @@ +2016-04-20 Ben Elliston + + * testsuite/lib/libjava.exp (libjava_arguments): Use 'file + normalize' rather than the defunct DejaGnu 'absolute' proc. + 2016-01-04 Jakub Jelinek * classpath/gnu/java/rmi/registry/RegistryImpl.java (version): Update diff --git a/libjava/testsuite/lib/libjava.exp b/libjava/testsuite/lib/libjava.exp index 0cfb253..45d2074 100644 --- a/libjava/testsuite/lib/libjava.exp +++ b/libjava/testsuite/lib/libjava.exp @@ -416,7 +416,7 @@ proc libjava_arguments {{mode compile}} { # Search for libtool. We need it to link. set found_compiler 0 - set d [absolute $objdir] + set d [file normalize $objdir] foreach x {. .. ../.. ../../..} { if {[file exists $d/$x/libtool]} then { # We have to run silently to avoid DejaGNU lossage. -- cgit v1.1 From 743af9719d3413ce7d8e9239d8e280f9b7082f9a Mon Sep 17 00:00:00 2001 From: Ben Elliston Date: Wed, 20 Apr 2016 10:44:21 +1000 Subject: Attach PR number to most recent entry. From-SVN: r235231 --- libjava/ChangeLog | 1 + 1 file changed, 1 insertion(+) (limited to 'libjava') diff --git a/libjava/ChangeLog b/libjava/ChangeLog index ce6f201..7c6a4fe 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,5 +1,6 @@ 2016-04-20 Ben Elliston + PR testsuite/70719 * testsuite/lib/libjava.exp (libjava_arguments): Use 'file normalize' rather than the defunct DejaGnu 'absolute' proc. -- cgit v1.1 From bc6d901463cf9173fdce15c22bbb85f274ce3565 Mon Sep 17 00:00:00 2001 From: Oleg Endo Date: Sat, 30 Apr 2016 09:11:03 +0000 Subject: config.guess: Remove SH5 support. / * config.guess: Remove SH5 support. * config.sub: Likewise. * configure: Likewise. * configure.ac: Likewise. config/ * picflag.m4: Remove SH5 support. gcc/ * config/sh/t-sh: Remove SH5 support. * config.gcc: Likewise. * configure: Likewise. contrib/ * compare-all-tests: Remove SH5 support. * config-list.mk: Likewise. libada/ * configure: Remove SH5 support. libgcc/ * config.host: Remove SH5 support. * configure: Likewise. libiberty/ * configure: Remove SH5 support. libjava/ * classpath/config.guess: Remove SH5 support. * classpath/config.sub: Likewise. From-SVN: r235676 --- libjava/ChangeLog | 5 +++++ libjava/classpath/config.guess | 4 ---- libjava/classpath/config.sub | 9 +-------- 3 files changed, 6 insertions(+), 12 deletions(-) (limited to 'libjava') diff --git a/libjava/ChangeLog b/libjava/ChangeLog index 7c6a4fe..a4f7453 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,8 @@ +2016-04-30 Oleg Endo + + * classpath/config.guess: Remove SH5 support. + * classpath/config.sub: Likewise. + 2016-04-20 Ben Elliston PR testsuite/70719 diff --git a/libjava/classpath/config.guess b/libjava/classpath/config.guess index b02565c..f70fd60 100755 --- a/libjava/classpath/config.guess +++ b/libjava/classpath/config.guess @@ -162,7 +162,6 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; - sh5el) machine=sh5le-unknown ;; *) machine=${UNAME_MACHINE_ARCH}-unknown ;; esac # The Operating System including object format, if it has switched @@ -968,9 +967,6 @@ EOF s390:Linux:*:* | s390x:Linux:*:*) echo ${UNAME_MACHINE}-ibm-linux exit ;; - sh64*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; sh*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; diff --git a/libjava/classpath/config.sub b/libjava/classpath/config.sub index 59bb593..d728224 100755 --- a/libjava/classpath/config.sub +++ b/libjava/classpath/config.sub @@ -307,7 +307,6 @@ case $basic_machine in | rl78 | rx \ | score \ | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ - | sh64 | sh64le \ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ | spu \ @@ -421,7 +420,7 @@ case $basic_machine in | pyramid-* \ | rl78-* | romp-* | rs6000-* | rx-* \ | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ - | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ + | shle-* | sh[1234]le-* | sh3ele-* \ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ | sparclite-* \ | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \ @@ -1064,12 +1063,6 @@ case $basic_machine in basic_machine=sh-hitachi os=-hms ;; - sh5el) - basic_machine=sh5le-unknown - ;; - sh64) - basic_machine=sh64-unknown - ;; sparclite-wrs | simso-wrs) basic_machine=sparclite-wrs os=-vxworks -- cgit v1.1 From ace08cb86b33a6d4274d477084c8e7c96937e3a2 Mon Sep 17 00:00:00 2001 From: Oleg Endo Date: Sat, 30 Apr 2016 10:26:14 +0000 Subject: config.guess: Revert r235676. / * config.guess: Revert r235676. * config.sub: Revert r235676. libjava/ * classpath/config.guess: Revert r235676. * classpath/config.sub: Revert r235676. From-SVN: r235677 --- libjava/ChangeLog | 5 +++++ libjava/classpath/config.guess | 4 ++++ libjava/classpath/config.sub | 9 ++++++++- 3 files changed, 17 insertions(+), 1 deletion(-) (limited to 'libjava') diff --git a/libjava/ChangeLog b/libjava/ChangeLog index a4f7453..596fc05 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,5 +1,10 @@ 2016-04-30 Oleg Endo + * classpath/config.guess: Revert r235676. + * classpath/config.sub: Revert r235676. + +2016-04-30 Oleg Endo + * classpath/config.guess: Remove SH5 support. * classpath/config.sub: Likewise. diff --git a/libjava/classpath/config.guess b/libjava/classpath/config.guess index f70fd60..b02565c 100755 --- a/libjava/classpath/config.guess +++ b/libjava/classpath/config.guess @@ -162,6 +162,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; + sh5el) machine=sh5le-unknown ;; *) machine=${UNAME_MACHINE_ARCH}-unknown ;; esac # The Operating System including object format, if it has switched @@ -967,6 +968,9 @@ EOF s390:Linux:*:* | s390x:Linux:*:*) echo ${UNAME_MACHINE}-ibm-linux exit ;; + sh64*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; sh*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; diff --git a/libjava/classpath/config.sub b/libjava/classpath/config.sub index d728224..59bb593 100755 --- a/libjava/classpath/config.sub +++ b/libjava/classpath/config.sub @@ -307,6 +307,7 @@ case $basic_machine in | rl78 | rx \ | score \ | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ + | sh64 | sh64le \ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ | spu \ @@ -420,7 +421,7 @@ case $basic_machine in | pyramid-* \ | rl78-* | romp-* | rs6000-* | rx-* \ | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ - | shle-* | sh[1234]le-* | sh3ele-* \ + | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ | sparclite-* \ | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \ @@ -1063,6 +1064,12 @@ case $basic_machine in basic_machine=sh-hitachi os=-hms ;; + sh5el) + basic_machine=sh5le-unknown + ;; + sh64) + basic_machine=sh64-unknown + ;; sparclite-wrs | simso-wrs) basic_machine=sparclite-wrs os=-vxworks -- cgit v1.1 From a1293f402a25801d03a58312b06b65c33702c726 Mon Sep 17 00:00:00 2001 From: Roger Sayle Date: Tue, 31 May 2016 11:30:56 +0000 Subject: builtins.c (java_builtins): Use popcount* and bswap* builtins to implement bitCount() and reverseBytes()... 2016-05-31 Roger Sayle gcc/java: * builtins.c (java_builtins): Use popcount* and bswap* builtins to implement bitCount() and reverseBytes() methods in java.lang.Integer and friends. (initialize_builtins): Annotate math builtins with ECF_LEAF. Call define_builtin for the new popcount* and bswap* builtins. libjava: * testsuite/libjava.lang/BuiltinBitCount.java: New test case. * testsuite/libjava.lang/BuiltinReverseBytes.java: Likewise. From-SVN: r236919 --- libjava/ChangeLog | 5 ++ libjava/testsuite/libjava.lang/BuiltinBitCount.jar | Bin 0 -> 1033 bytes .../testsuite/libjava.lang/BuiltinBitCount.java | 51 +++++++++++++++++ libjava/testsuite/libjava.lang/BuiltinBitCount.out | 0 .../testsuite/libjava.lang/BuiltinReverseBytes.jar | Bin 0 -> 1126 bytes .../libjava.lang/BuiltinReverseBytes.java | 62 +++++++++++++++++++++ .../testsuite/libjava.lang/BuiltinReverseBytes.out | 0 7 files changed, 118 insertions(+) create mode 100644 libjava/testsuite/libjava.lang/BuiltinBitCount.jar create mode 100644 libjava/testsuite/libjava.lang/BuiltinBitCount.java create mode 100644 libjava/testsuite/libjava.lang/BuiltinBitCount.out create mode 100644 libjava/testsuite/libjava.lang/BuiltinReverseBytes.jar create mode 100644 libjava/testsuite/libjava.lang/BuiltinReverseBytes.java create mode 100644 libjava/testsuite/libjava.lang/BuiltinReverseBytes.out (limited to 'libjava') diff --git a/libjava/ChangeLog b/libjava/ChangeLog index 596fc05..0a28305 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,8 @@ +2016-05-31 Roger Sayle + + * testsuite/libjava.lang/BuiltinBitCount.java: New test case. + * testsuite/libjava.lang/BuiltinReverseBytes.java: Likewise. + 2016-04-30 Oleg Endo * classpath/config.guess: Revert r235676. diff --git a/libjava/testsuite/libjava.lang/BuiltinBitCount.jar b/libjava/testsuite/libjava.lang/BuiltinBitCount.jar new file mode 100644 index 0000000..0f6591c Binary files /dev/null and b/libjava/testsuite/libjava.lang/BuiltinBitCount.jar differ diff --git a/libjava/testsuite/libjava.lang/BuiltinBitCount.java b/libjava/testsuite/libjava.lang/BuiltinBitCount.java new file mode 100644 index 0000000..bcafd31 --- /dev/null +++ b/libjava/testsuite/libjava.lang/BuiltinBitCount.java @@ -0,0 +1,51 @@ +class BuiltinBitCount +{ + public static int popcount(int x) + { + return Integer.bitCount(x); + } + + public static int popcountl(long x) + { + return Long.bitCount(x); + } + + public static void main(String[] args) + { + if (Integer.bitCount(0) != 0) + throw new Error(); + if (Integer.bitCount(8) != 1) + throw new Error(); + if (Integer.bitCount(123456) != 6) + throw new Error(); + if (Integer.bitCount(-1) != 32) + throw new Error(); + + if (Long.bitCount(0) != 0) + throw new Error(); + if (Long.bitCount(8) != 1) + throw new Error(); + if (Long.bitCount(123456) != 6) + throw new Error(); + if (Long.bitCount(-1) != 64) + throw new Error(); + + if (popcount(0) != 0) + throw new Error(); + if (popcount(8) != 1) + throw new Error(); + if (popcount(123456) != 6) + throw new Error(); + if (popcount(-1) != 32) + throw new Error(); + + if (popcountl(0) != 0) + throw new Error(); + if (popcountl(8) != 1) + throw new Error(); + if (popcountl(123456) != 6) + throw new Error(); + if (popcountl(-1) != 64) + throw new Error(); + } +} diff --git a/libjava/testsuite/libjava.lang/BuiltinBitCount.out b/libjava/testsuite/libjava.lang/BuiltinBitCount.out new file mode 100644 index 0000000..e69de29 diff --git a/libjava/testsuite/libjava.lang/BuiltinReverseBytes.jar b/libjava/testsuite/libjava.lang/BuiltinReverseBytes.jar new file mode 100644 index 0000000..283a178 Binary files /dev/null and b/libjava/testsuite/libjava.lang/BuiltinReverseBytes.jar differ diff --git a/libjava/testsuite/libjava.lang/BuiltinReverseBytes.java b/libjava/testsuite/libjava.lang/BuiltinReverseBytes.java new file mode 100644 index 0000000..0d2e332 --- /dev/null +++ b/libjava/testsuite/libjava.lang/BuiltinReverseBytes.java @@ -0,0 +1,62 @@ +class BuiltinReverseBytes +{ + public static short bswap16(short x) + { + return Short.reverseBytes(x); + } + + public static int bswap32(int x) + { + return Integer.reverseBytes(x); + } + + public static long bswap64(long x) + { + return Long.reverseBytes(x); + } + + public static void main(String[] args) + { + if (Short.reverseBytes((short)0) != (short)0) + throw new Error(); + if (Short.reverseBytes((short)0x1234) != (short)0x3412) + throw new Error(); + if (Short.reverseBytes((short)-1) != (short)-1) + throw new Error(); + + if (Integer.reverseBytes(0) != 0) + throw new Error(); + if (Integer.reverseBytes(0x12345678) != 0x78563412) + throw new Error(); + if (Integer.reverseBytes(-1) != -1) + throw new Error(); + + if (Long.reverseBytes(0L) != 0L) + throw new Error(); + if (Long.reverseBytes(0x123456789abcde0fL) != 0x0fdebc9a78563412L) + throw new Error(); + if (Long.reverseBytes(-1L) != -1L) + throw new Error(); + + if (bswap16((short)0) != (short)0) + throw new Error(); + if (bswap16((short)0x1234) != (short)0x3412) + throw new Error(); + if (bswap16((short)-1) != (short)-1) + throw new Error(); + + if (bswap32(0) != 0) + throw new Error(); + if (bswap32(0x12345678) != 0x78563412) + throw new Error(); + if (bswap32(-1) != -1) + throw new Error(); + + if (bswap64(0L) != 0L) + throw new Error(); + if (bswap64(0x123456789abcde0fL) != 0x0fdebc9a78563412L) + throw new Error(); + if (bswap64(-1L) != -1L) + throw new Error(); + } +} diff --git a/libjava/testsuite/libjava.lang/BuiltinReverseBytes.out b/libjava/testsuite/libjava.lang/BuiltinReverseBytes.out new file mode 100644 index 0000000..e69de29 -- cgit v1.1 From 880ce6a8a45e0a354142d83ac3807c99182077fe Mon Sep 17 00:00:00 2001 From: Matthias Klose Date: Wed, 1 Jun 2016 20:10:48 +0000 Subject: libtool-version: Bump soversion. 2016-06-01 Matthias Klose * libtool-version: Bump soversion. From-SVN: r237007 --- libjava/ChangeLog | 4 ++++ libjava/libtool-version | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) (limited to 'libjava') diff --git a/libjava/ChangeLog b/libjava/ChangeLog index 0a28305..a3bead2 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,7 @@ +2016-06-01 Matthias Klose + + * libtool-version: Bump soversion. + 2016-05-31 Roger Sayle * testsuite/libjava.lang/BuiltinBitCount.java: New test case. diff --git a/libjava/libtool-version b/libjava/libtool-version index d2648c4..893f000 100644 --- a/libjava/libtool-version +++ b/libjava/libtool-version @@ -5,4 +5,4 @@ # Note: When changing the version here, please do also update LIBGCJ_SONAME # in gcc/config/i386/cygwin.h and gcc/config/i386/mingw32.h. # CURRENT:REVISION:AGE -17:0:0 +18:0:0 -- cgit v1.1 From 845a4b727a88af8f4008e24e1a02ce49607bd91a Mon Sep 17 00:00:00 2001 From: Matthew Fortune Date: Wed, 13 Jul 2016 21:34:35 +0000 Subject: 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 (limited to 'libjava') 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 + + * 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 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 Binary files /dev/null and b/libjava/testsuite/libjava.jar/arraysort.jar 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_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 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 -- cgit v1.1 From 0d355cf973a80a3d15132ceabd55f6510f729d88 Mon Sep 17 00:00:00 2001 From: Matthew Fortune Date: Wed, 13 Jul 2016 21:34:52 +0000 Subject: Fix return type handling for Proxy classes libjava/ * java/lang/reflect/natVMProxy.cc (unbox): Use ffi_arg for integer return types smaller than a word. * testsuite/libjava.jar/ReturnInvocationHandler.java: New file. * testsuite/libjava.jar/ReturnProxyTest.jar: Likewise. * testsuite/libjava.jar/ReturnProxyTest.java: Likewise. * testsuite/libjava.jar/ReturnProxyTest.out: Likewise. * testsuite/libjava.jar/ReturnProxyTest.xfail: Likewise. * testsuite/libjava.jar/ReturnTypes.java: Likewise. * testsuite/libjava.jar/ReturnTypesImpl.java: Likewise. From-SVN: r238312 --- libjava/ChangeLog | 12 +++++++++ libjava/java/lang/reflect/natVMProxy.cc | 10 ++++---- .../libjava.jar/ReturnInvocationHandler.java | 24 ++++++++++++++++++ libjava/testsuite/libjava.jar/ReturnProxyTest.jar | Bin 0 -> 2671 bytes libjava/testsuite/libjava.jar/ReturnProxyTest.java | 27 +++++++++++++++++++++ libjava/testsuite/libjava.jar/ReturnProxyTest.out | 12 +++++++++ .../testsuite/libjava.jar/ReturnProxyTest.xfail | 1 + libjava/testsuite/libjava.jar/ReturnTypes.java | 9 +++++++ libjava/testsuite/libjava.jar/ReturnTypesImpl.java | 27 +++++++++++++++++++++ 9 files changed, 117 insertions(+), 5 deletions(-) create mode 100644 libjava/testsuite/libjava.jar/ReturnInvocationHandler.java create mode 100644 libjava/testsuite/libjava.jar/ReturnProxyTest.jar create mode 100644 libjava/testsuite/libjava.jar/ReturnProxyTest.java create mode 100644 libjava/testsuite/libjava.jar/ReturnProxyTest.out create mode 100644 libjava/testsuite/libjava.jar/ReturnProxyTest.xfail create mode 100644 libjava/testsuite/libjava.jar/ReturnTypes.java create mode 100644 libjava/testsuite/libjava.jar/ReturnTypesImpl.java (limited to 'libjava') diff --git a/libjava/ChangeLog b/libjava/ChangeLog index 06b354d..f7c282f 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,5 +1,17 @@ 2016-07-13 Matthew Fortune + * java/lang/reflect/natVMProxy.cc (unbox): Use ffi_arg for + integer return types smaller than a word. + * testsuite/libjava.jar/ReturnInvocationHandler.java: New file. + * testsuite/libjava.jar/ReturnProxyTest.jar: Likewise. + * testsuite/libjava.jar/ReturnProxyTest.java: Likewise. + * testsuite/libjava.jar/ReturnProxyTest.out: Likewise. + * testsuite/libjava.jar/ReturnProxyTest.xfail: Likewise. + * testsuite/libjava.jar/ReturnTypes.java: Likewise. + * testsuite/libjava.jar/ReturnTypesImpl.java: Likewise. + +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. diff --git a/libjava/java/lang/reflect/natVMProxy.cc b/libjava/java/lang/reflect/natVMProxy.cc index e46263d..19cde20 100644 --- a/libjava/java/lang/reflect/natVMProxy.cc +++ b/libjava/java/lang/reflect/natVMProxy.cc @@ -272,17 +272,17 @@ unbox (jobject o, jclass klass, void *rvalue, FFI_TYPE type) if (klass == JvPrimClass (byte)) { _Jv_CheckCast (&Byte::class$, o); - *(jbyte*)rvalue = ((Byte*)o)->byteValue(); + *(ffi_arg*)rvalue = ((Byte*)o)->byteValue(); } else if (klass == JvPrimClass (short)) { _Jv_CheckCast (&Short::class$, o); - *(jshort*)rvalue = ((Short*)o)->shortValue(); + *(ffi_arg*)rvalue = ((Short*)o)->shortValue(); } else if (klass == JvPrimClass (int)) { _Jv_CheckCast (&Integer::class$, o); - *(jint*)rvalue = ((Integer*)o)->intValue(); + *(ffi_arg*)rvalue = ((Integer*)o)->intValue(); } else if (klass == JvPrimClass (long)) { @@ -302,12 +302,12 @@ unbox (jobject o, jclass klass, void *rvalue, FFI_TYPE type) else if (klass == JvPrimClass (boolean)) { _Jv_CheckCast (&Boolean::class$, o); - *(jboolean*)rvalue = ((Boolean*)o)->booleanValue(); + *(ffi_arg*)rvalue = ((Boolean*)o)->booleanValue(); } else if (klass == JvPrimClass (char)) { _Jv_CheckCast (&Character::class$, o); - *(jchar*)rvalue = ((Character*)o)->charValue(); + *(ffi_arg*)rvalue = ((Character*)o)->charValue(); } else JvFail ("Bad ffi type in proxy"); diff --git a/libjava/testsuite/libjava.jar/ReturnInvocationHandler.java b/libjava/testsuite/libjava.jar/ReturnInvocationHandler.java new file mode 100644 index 0000000..18b52b73a --- /dev/null +++ b/libjava/testsuite/libjava.jar/ReturnInvocationHandler.java @@ -0,0 +1,24 @@ +import java.lang.reflect.InvocationHandler; +import java.lang.reflect.Method; + +public class ReturnInvocationHandler implements InvocationHandler +{ + private Object obj; + public ReturnInvocationHandler(Object obj) + { + this.obj = obj; + } + public Object invoke(Object proxy, Method m, Object[] args) throws Throwable + { + Object result; + try + { + result = m.invoke(obj, args); + } + catch (Exception e) + { + throw e; + } + return result; + } +} diff --git a/libjava/testsuite/libjava.jar/ReturnProxyTest.jar b/libjava/testsuite/libjava.jar/ReturnProxyTest.jar new file mode 100644 index 0000000..00daabe Binary files /dev/null and b/libjava/testsuite/libjava.jar/ReturnProxyTest.jar differ diff --git a/libjava/testsuite/libjava.jar/ReturnProxyTest.java b/libjava/testsuite/libjava.jar/ReturnProxyTest.java new file mode 100644 index 0000000..bdd0ba9 --- /dev/null +++ b/libjava/testsuite/libjava.jar/ReturnProxyTest.java @@ -0,0 +1,27 @@ +import java.lang.reflect.Proxy; + +public class ReturnProxyTest +{ + public static void main(String[] args) + { + ReturnTypes orig = new ReturnTypesImpl(); + Object o = Proxy.newProxyInstance(orig.getClass().getClassLoader(), + new Class[] { ReturnTypes.class }, + new ReturnInvocationHandler(orig)); + ReturnTypes rt = (ReturnTypes)o; + + System.out.println(orig.getBoolean()); + System.out.println(orig.getChar()); + System.out.println(orig.getByte()); + System.out.println(orig.getShort()); + System.out.println(orig.getInt()); + System.out.println(orig.getLong()); + + System.out.println(rt.getBoolean()); + System.out.println(rt.getChar()); + System.out.println(rt.getByte()); + System.out.println(rt.getShort()); + System.out.println(rt.getInt()); + System.out.println(rt.getLong()); + } +} diff --git a/libjava/testsuite/libjava.jar/ReturnProxyTest.out b/libjava/testsuite/libjava.jar/ReturnProxyTest.out new file mode 100644 index 0000000..b141f06 --- /dev/null +++ b/libjava/testsuite/libjava.jar/ReturnProxyTest.out @@ -0,0 +1,12 @@ +false +a +-1 +-1 +-1 +-1 +false +a +-1 +-1 +-1 +-1 diff --git a/libjava/testsuite/libjava.jar/ReturnProxyTest.xfail b/libjava/testsuite/libjava.jar/ReturnProxyTest.xfail new file mode 100644 index 0000000..73ffe1d --- /dev/null +++ b/libjava/testsuite/libjava.jar/ReturnProxyTest.xfail @@ -0,0 +1 @@ +main=ReturnProxyTest diff --git a/libjava/testsuite/libjava.jar/ReturnTypes.java b/libjava/testsuite/libjava.jar/ReturnTypes.java new file mode 100644 index 0000000..9fbd6bd --- /dev/null +++ b/libjava/testsuite/libjava.jar/ReturnTypes.java @@ -0,0 +1,9 @@ +public interface ReturnTypes +{ + public short getShort(); + public char getChar(); + public byte getByte(); + public int getInt(); + public long getLong(); + public boolean getBoolean(); +} diff --git a/libjava/testsuite/libjava.jar/ReturnTypesImpl.java b/libjava/testsuite/libjava.jar/ReturnTypesImpl.java new file mode 100644 index 0000000..33fab1b --- /dev/null +++ b/libjava/testsuite/libjava.jar/ReturnTypesImpl.java @@ -0,0 +1,27 @@ +public class ReturnTypesImpl implements ReturnTypes +{ + public short getShort() + { + return -1; + } + public char getChar() + { + return 'a'; + } + public byte getByte() + { + return -1; + } + public int getInt() + { + return -1; + } + public long getLong() + { + return -1; + } + public boolean getBoolean() + { + return false; + } +} -- cgit v1.1