comp.lang.ada
 help / color / mirror / Atom feed
From: Duncan Sands <baldrick@free.fr>
To: comp.lang.ada@ada-france.org
Cc: Robert A Duff <bobduff@shell01.theworld.com>
Subject: Re: LLVM--Low Level Virtual Machine--and Ada
Date: Fri, 20 Jul 2007 09:44:06 +0200
Date: 2007-07-20T09:45:04+02:00	[thread overview]
Message-ID: <mailman.5.1184917437.3834.comp.lang.ada@ada-france.org> (raw)
In-Reply-To: <wcchco02iao.fsf@shell01.TheWorld.com>

> > PS: the only thing that needed new LLVM functionality,
> > i.e. functionality that didn't exist and wasn't being
> > worked on, was pointers to nested functions.
> 
> How did you implement those?
> 
> GNAT uses trampolines, which are less than ideal
> for several reasons.

Hi Bob, I used trampolines.  I really couldn't do it any other
way without a bunch of modifications to the GNAT front-end.
Also, this seems to be the only solution if you want to be able
to pass such pointers to foreign language routines, which seems
nice to have if not essential.  The major downside I see is that
they seem to be extremely expensive, presumably because you take
an icache hit every time you jump to the stack.  I plan to implement
a bunch of small optimizations which may help, such as converting
direct calls to trampolines into direct calls to the nested functions
(inlining hopefully will create such direct calls).  Any suggestions
for a better approach than trampolines?  I'm also curious to hear
what the other less than ideal properties of trampolines are!

Ciao,

Duncan.



  reply	other threads:[~2007-07-20  7:44 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-07-18  3:56 LLVM--Low Level Virtual Machine--and Ada Jerry
2007-07-18  7:24 ` Georg Bauhaus
2007-07-18  7:48 ` Duncan Sands
2007-07-19 14:30   ` Maxim Reznik
2007-07-19 14:56     ` Duncan Sands
     [not found]     ` <200707191656.27602.baldrick@free.fr>
2007-07-19 15:03       ` Duncan Sands
2007-07-19 21:30         ` Robert A Duff
2007-07-20  7:44           ` Duncan Sands [this message]
2007-07-20 14:06             ` Robert A Duff
2007-07-21 13:09               ` Tero Koskinen
2007-07-23  7:47               ` Duncan Sands
2007-07-24  2:12                 ` Randy Brukardt
2007-07-24  8:03                   ` Duncan Sands
2007-07-24  9:50                     ` Colin Paul Gloster
2007-07-24 10:47                       ` Markus E Leypold
2007-07-25 12:12                         ` Colin Paul Gloster
2007-07-25 12:59                           ` Markus E Leypold
2007-07-24 19:21                     ` Randy Brukardt
2007-07-24 19:36                       ` Duncan Sands
2007-07-24 19:58                         ` Randy Brukardt
2007-07-24 23:28                   ` Robert A Duff
2007-07-25  0:39                     ` Randy Brukardt
2007-07-25  2:00                       ` Robert A Duff
2007-07-25 13:14                         ` Duncan Sands
2007-07-21 22:04 ` anon
2007-07-22 13:22   ` Steve
2007-07-23 12:29   ` Colin Paul Gloster
2007-07-23 14:42     ` anon
2007-07-23 16:55       ` Markus E Leypold
2007-07-24 10:19       ` Colin Paul Gloster
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox