aboutsummaryrefslogtreecommitdiff
path: root/libjava
diff options
context:
space:
mode:
authorIan Lance Taylor <ian@gcc.gnu.org>2016-07-22 20:05:52 +0000
committerIan Lance Taylor <ian@gcc.gnu.org>2016-07-22 20:05:52 +0000
commit8bab7985c811e49bb1f90d442fc53e95f2b4dcdc (patch)
treeabdbd898676e1f853fca2d7e031d105d7ebcf676 /libjava
parentc2e6d4d297c6964f960822f58e56a6d80ca71307 (diff)
parent22b955cca564a9a3a5b8c9d9dd1e295b7943c128 (diff)
downloadgcc-8bab7985c811e49bb1f90d442fc53e95f2b4dcdc.zip
gcc-8bab7985c811e49bb1f90d442fc53e95f2b4dcdc.tar.gz
gcc-8bab7985c811e49bb1f90d442fc53e95f2b4dcdc.tar.bz2
Merge from trunk revision 238662.
From-SVN: r238667
Diffstat (limited to 'libjava')
-rw-r--r--libjava/ChangeLog45
-rw-r--r--libjava/interpret-run.cc2
-rw-r--r--libjava/java/lang/reflect/natVMProxy.cc10
-rw-r--r--libjava/libtool-version2
-rw-r--r--libjava/testsuite/lib/libjava.exp2
-rw-r--r--libjava/testsuite/libjava.jar/ReturnInvocationHandler.java24
-rw-r--r--libjava/testsuite/libjava.jar/ReturnProxyTest.jarbin0 -> 2671 bytes
-rw-r--r--libjava/testsuite/libjava.jar/ReturnProxyTest.java27
-rw-r--r--libjava/testsuite/libjava.jar/ReturnProxyTest.out12
-rw-r--r--libjava/testsuite/libjava.jar/ReturnProxyTest.xfail1
-rw-r--r--libjava/testsuite/libjava.jar/ReturnTypes.java9
-rw-r--r--libjava/testsuite/libjava.jar/ReturnTypesImpl.java27
-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
-rw-r--r--libjava/testsuite/libjava.lang/BuiltinBitCount.jarbin0 -> 1033 bytes
-rw-r--r--libjava/testsuite/libjava.lang/BuiltinBitCount.java51
-rw-r--r--libjava/testsuite/libjava.lang/BuiltinBitCount.out0
-rw-r--r--libjava/testsuite/libjava.lang/BuiltinReverseBytes.jarbin0 -> 1126 bytes
-rw-r--r--libjava/testsuite/libjava.lang/BuiltinReverseBytes.java62
-rw-r--r--libjava/testsuite/libjava.lang/BuiltinReverseBytes.out0
22 files changed, 321 insertions, 8 deletions
diff --git a/libjava/ChangeLog b/libjava/ChangeLog
index dc57993..f7c282f 100644
--- a/libjava/ChangeLog
+++ b/libjava/ChangeLog
@@ -1,3 +1,48 @@
+2016-07-13 Matthew Fortune <matthew.fortune@imgtec.com>
+
+ * 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 <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.
+
+2016-05-31 Roger Sayle <roger@nextmovesoftware.com>
+
+ * testsuite/libjava.lang/BuiltinBitCount.java: New test case.
+ * testsuite/libjava.lang/BuiltinReverseBytes.java: Likewise.
+
+2016-04-30 Oleg Endo <olegendo@gcc.gnu.org>
+
+ * classpath/config.guess: Revert r235676.
+ * classpath/config.sub: Revert r235676.
+
+2016-04-30 Oleg Endo <olegendo@gcc.gnu.org>
+
+ * classpath/config.guess: Remove SH5 support.
+ * classpath/config.sub: Likewise.
+
+2016-04-20 Ben Elliston <bje@gnu.org>
+
+ PR testsuite/70719
+ * testsuite/lib/libjava.exp (libjava_arguments): Use 'file
+ normalize' rather than the defunct DejaGnu 'absolute' proc.
+
2016-01-04 Jakub Jelinek <jakub@redhat.com>
* classpath/gnu/java/rmi/registry/RegistryImpl.java (version): Update
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/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/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
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.
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
--- /dev/null
+++ b/libjava/testsuite/libjava.jar/ReturnProxyTest.jar
Binary files 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;
+ }
+}
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
diff --git a/libjava/testsuite/libjava.lang/BuiltinBitCount.jar b/libjava/testsuite/libjava.lang/BuiltinBitCount.jar
new file mode 100644
index 0000000..0f6591c
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/BuiltinBitCount.jar
Binary files 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
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/BuiltinBitCount.out
diff --git a/libjava/testsuite/libjava.lang/BuiltinReverseBytes.jar b/libjava/testsuite/libjava.lang/BuiltinReverseBytes.jar
new file mode 100644
index 0000000..283a178
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/BuiltinReverseBytes.jar
Binary files 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
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/BuiltinReverseBytes.out