public inbox for libffi-discuss@sourceware.org
 help / color / mirror / Atom feed
From: Jay <jay.krell@cornell.edu>
To: Richard Henderson <rth@redhat.com>
Cc: Ian Taylor <iant@golang.org>,
	"Lynn A. Boger" <laboger@linux.vnet.ibm.com>,
	gcc-patches <gcc-patches@gcc.gnu.org>,
	"<libffi-discuss@sourceware.org>" <libffi-discuss@sourceware.org>,
	"gofrontend-dev@googlegroups.com"
	<gofrontend-dev@googlegroups.com>,
	"<ian@airs.com>" <ian@airs.com>
Subject: Re: [gofrontend-dev] Re: [PATCH 00/13] Go closures, libffi, and the static chain
Date: Fri, 07 Nov 2014 08:50:00 -0000	[thread overview]
Message-ID: <3BDA9478-588F-47E2-9548-8C2613DAEABA@gmail.com> (raw)
In-Reply-To: <545C770A.9040100@redhat.com>

I worked on what I suspect is similar stuff.

I ran into the problem..pardon me if my terminology is wrong..PLT thunks for nested functions trashed registers that were in use. My solution was to mark them "hidden" or whatever is the term for not replaceable...also not exported but I recall not replaceable is more important.

 - Jay

On Nov 6, 2014, at 11:38 PM, Richard Henderson <rth@redhat.com> wrote:

> On 11/06/2014 06:45 PM, Ian Taylor wrote:
>> On Thu, Nov 6, 2014 at 5:04 AM, Richard Henderson <rth@redhat.com> wrote:
>>> 
>>> That said, this *may* not actually be a problem.  It's not the direct (possibly
>>> lazy bound) call into libffi that needs a static chain, it's the indirect call
>>> that libffi produces.  And the indirect calls that Go produces.
>>> 
>>> I'm pretty sure that there are no dynamically linked Go calls that require the
>>> static chain.  They're used for closures, which are either fully indirect from
>>> a different translation unit, or locally bound closures through which the
>>> optimizer has seen the construction, and optimized to a direct call.
>>> 
>>> Ian, have I missed a case where a closure could wind up with a direct call to a
>>> lazy bound function?
>> 
>> I think you've covered all the cases.  The closure value is only
>> required when calling a nested function.  There is no way to refer
>> directly to a nested function defined in a different shared library.
>> The only way you can get such a reference is if some function in that
>> shared library returns it.
> 
> Sorry, I wasn't clear.  I know nested functions must be local.
> 
> I'm asking about Go closures, supposing we go ahead with the change to
> make them use the static chain register.
> 
> I'm merely pretty sure that calling a closure is either fully indirect
> or local direct.
> 
> Certainly there are cases in the testsuite where -O3 is able to look
> through the creation of a closure and have a direct call to the function.
> 
> Given that closures are custom created for the data at the creation
> site, it seems unlikely that the optimizer could look through that and
> come up with a dynamically bound function.
> 
> 
> r~

  reply	other threads:[~2014-11-07  8:50 UTC|newest]

Thread overview: 43+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-10-10 20:43 Richard Henderson
2014-10-10 20:43 ` [PATCH 10/13] libffi: Rewrite aarch64 Richard Henderson
2014-10-10 20:43 ` [PATCH 12/13] libffi: Rewrite i386 sysv Richard Henderson
2014-10-10 20:43 ` [PATCH 05/13] libgo: Use the static chain for the closure Richard Henderson
2014-10-10 20:43 ` [PATCH 04/13] Use the static chain as the closure parameter from Go Richard Henderson
2014-10-10 20:43 ` [PATCH 11/13] libffi: Support go closures on aarch64 Richard Henderson
2014-10-10 20:43 ` [PATCH 06/13] libffi: Add entry points for interacting with Go Richard Henderson
2014-10-10 20:43 ` [PATCH 03/13] HACK! Allow the static chain to be set from C Richard Henderson
2014-10-11  0:33   ` Ian Lance Taylor
     [not found]     ` <CAMn1gO7vJOcNi218p9m32de_rrnKBrUcGF-EKP3dJwaL+8BtUw@mail.gmail.com>
2014-10-11  1:42       ` [gofrontend-dev] " Peter Collingbourne
2014-10-11  4:24         ` Richard Henderson
2014-10-13  8:10           ` Richard Biener
2014-10-13 18:46             ` Peter Collingbourne
2014-10-14 18:44   ` [PATCH v2 03/13] " Richard Henderson
2014-10-10 20:43 ` [PATCH 13/13] libffi: Support go closures on i386 Richard Henderson
2014-10-10 20:43 ` [PATCH 01/13] Make TARGET_STATIC_CHAIN allow a function type Richard Henderson
2014-10-10 20:43 ` [PATCH 09/13] libgo: Remove __go_get/set_closure Richard Henderson
2014-10-10 20:43 ` [PATCH 07/13] libffi: Support go closures on x86_64 Richard Henderson
2014-10-10 20:43 ` [PATCH 02/13] Allow the front-end to create calls with a static chain Richard Henderson
2014-10-10 20:43 ` [PATCH 08/13] libgo: Use the new libffi interfaces for Go Richard Henderson
2014-10-11  0:23 ` [PATCH 00/13] Go closures, libffi, and the static chain Ian Lance Taylor
2014-11-05 21:34 ` Lynn A. Boger
2014-11-06  6:59   ` Richard Henderson
2014-11-06 12:48     ` Alan Modra
2014-11-06 13:04       ` Richard Henderson
2014-11-06 17:45         ` [gofrontend-dev] " Ian Taylor
2014-11-07  7:39           ` Richard Henderson
2014-11-07  8:50             ` Jay [this message]
2014-11-07 16:06             ` Ian Taylor
2014-11-07 23:55               ` Alan Modra
2014-11-06 13:10       ` Lynn A. Boger
2014-11-06 13:17         ` Richard Henderson
2014-12-11  9:06 ` Dominik Vogt
2014-12-11  9:21   ` Alan Modra
2014-12-11 10:31     ` [gofrontend-dev] " Dominik Vogt
2014-12-11 12:25       ` Dominik Vogt
2014-12-11 19:56         ` Richard Henderson
2014-12-12 12:06           ` Dominik Vogt
2014-12-12 18:14             ` Richard Henderson
2014-12-15  9:42               ` Dominik Vogt
2014-12-15 20:11                 ` Richard Henderson
2014-12-12 13:57     ` Dominik Vogt
2014-12-11 19:38   ` Richard Henderson

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=3BDA9478-588F-47E2-9548-8C2613DAEABA@gmail.com \
    --to=jay.krell@cornell.edu \
    --cc=gcc-patches@gcc.gnu.org \
    --cc=gofrontend-dev@googlegroups.com \
    --cc=ian@airs.com \
    --cc=iant@golang.org \
    --cc=laboger@linux.vnet.ibm.com \
    --cc=libffi-discuss@sourceware.org \
    --cc=rth@redhat.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).