public inbox for java-patches@gcc.gnu.org
 help / color / mirror / Atom feed
From: Matthew Fortune <Matthew.Fortune@imgtec.com>
To: Tom Tromey <tom@tromey.com>
Cc: "java-patches@gcc.gnu.org" <java-patches@gcc.gnu.org>,
	"'gcc-patches@gcc.gnu.org' (gcc-patches@gcc.gnu.org)"
	<gcc-patches@gcc.gnu.org>, "per@bothner.com" <per@bothner.com>,
	"aph@redhat.com" <aph@redhat.com>,
	Aurelien Jarno <aurelien@aurel32.net>
Subject: RE: [PATCH] Fix FFI return type for closures in the java interpreter
Date: Tue, 28 Jun 2016 15:30:00 -0000	[thread overview]
Message-ID: <6D39441BF12EF246A7ABCE6654B023537E46241B@HHMAIL01.hh.imgtec.org> (raw)
In-Reply-To: <8760stviqj.fsf@tromey.com>

Tom Tromey <tom@tromey.com> writes:
> >>>>> "Matthew" == Matthew Fortune <Matthew.Fortune@imgtec.com> writes:
> Matthew> I've identified a latent bug in the java interpreter that affects MIPS
> Matthew> n32 and n64 ABIs both little and big endian and, I presume, any 64-bit
> Matthew> big endian target with int as 32-bit.
> [...]
> 
> Matthew> libjava/
> Matthew> * interpret-run.cc: Use ffi_arg for FFI integer return types.
> Matthew> libjava/testsuite/
> Matthew> * libjava.jar/arraysort.java: New file.
> Matthew> * libjava.jar/arraysort.jar: New file.
> Matthew> * libjava.jar/arraysort.out: New file.
> Matthew> * libjava.jar/arraysort.xfail: New file.
> 
> Tom> This is ok.
> 
> It occurred to me that this might not be correct on platforms using the
> Java raw API; which I think is just x86.
> 
> I'm actually not sure -- I don't remember (if I ever knew) if the raw
> API has the same return-value promotion rules as the ordinary API.
> 
> Could you check?  I think a -m32 build ought to show it.  Maybe your
> x86-64 build already did this?

I'm not sure this will matter if the only arch is x86 as ffi_arg will be
32-bit anyway there. There would need to be a 64bit arch using the raw
api. I don't really understand what the raw api is, the references to it
in the code seemed cryptic.

I can do a -m32 test anyway, I only did x86_64 as I don't think that
32-bit architectures will be affected at all.

> Matthew> I mentioned in my earlier post about a possible similar issue in the
> Matthew> lang/reflect/natVMProxy.cc code (unbox function) by code inspection. I
> Matthew> don't know how to trigger this code but perhaps someone can advise.
>
> It's a bit complicated, and it's been a while since I looked at any of
> this, but I think what you want to do is make an InvocationHandler that
> handles some method returning "int" (maybe hashCode would work), then
> make a Proxy class that wraps it.  Then, make an instance of the proxy
> class and call the method.

Thanks for the pointers, a bit of googling got me to the right code. I can
confirm that my guess was right and the same bug exists in the natVMProxy.cc
code. It will break for all big endian targets when using types smaller than
a word. I have only proved the bug exists so far but not tried a fix.

Thanks,
Matthew

  reply	other threads:[~2016-06-28 15:30 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-06-27 20:17 Matthew Fortune
2016-06-27 21:20 ` Tom Tromey
2016-06-28  8:08   ` Tom Tromey
2016-06-28 15:30     ` Matthew Fortune [this message]
2016-06-28 21:22       ` Tom Tromey
2016-07-12 10:20         ` Matthew Fortune
2016-07-12 16:32           ` Tom Tromey
2016-07-13 21:36             ` Matthew Fortune

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=6D39441BF12EF246A7ABCE6654B023537E46241B@HHMAIL01.hh.imgtec.org \
    --to=matthew.fortune@imgtec.com \
    --cc=aph@redhat.com \
    --cc=aurelien@aurel32.net \
    --cc=gcc-patches@gcc.gnu.org \
    --cc=java-patches@gcc.gnu.org \
    --cc=per@bothner.com \
    --cc=tom@tromey.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).