aboutsummaryrefslogtreecommitdiff
path: root/libjava/java
diff options
context:
space:
mode:
authorMatthew Fortune <matthew.fortune@imgtec.com>2016-07-13 21:34:52 +0000
committerMatthew Fortune <mpf@gcc.gnu.org>2016-07-13 21:34:52 +0000
commit0d355cf973a80a3d15132ceabd55f6510f729d88 (patch)
tree11cf9820abde4b603bbec44402852023a55e10fd /libjava/java
parent845a4b727a88af8f4008e24e1a02ce49607bd91a (diff)
downloadgcc-0d355cf973a80a3d15132ceabd55f6510f729d88.zip
gcc-0d355cf973a80a3d15132ceabd55f6510f729d88.tar.gz
gcc-0d355cf973a80a3d15132ceabd55f6510f729d88.tar.bz2
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
Diffstat (limited to 'libjava/java')
-rw-r--r--libjava/java/lang/reflect/natVMProxy.cc10
1 files changed, 5 insertions, 5 deletions
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");