unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Stefan Monnier <monnier@iro.umontreal.ca>
To: egnarts-ms <egnartsms@gmail.com>
Cc: Emacs-devel@gnu.org
Subject: Re: lexical-binding questions
Date: Tue, 15 May 2012 09:55:05 -0400	[thread overview]
Message-ID: <jwvehqlr20u.fsf-monnier+emacs@gnu.org> (raw)
In-Reply-To: <33844651.post@talk.nabble.com>

> exec_byte_code currently allocates stack frames on a per-call basis,
> according to what a byte-code object says about its max stack depth.

It doesn't have to stay that way.

> 1) doing direct call from exec_byte_code to exec_byte_code would most
> evidently imply the same procedure: creating a new stack frame and copying
> all the arguments (as Lisp_Objects) to it;

You would call exec_byte_code but either call some new function or make
no function call at all (thought that would probably require manually
handling a separate "return address stack").

> 2) besides the above, going through Ffuncall does some additional things,
> like checking lisp_eval_depth and performing GC if necessary, plus updating
> the backtrace_list global variable. By all evidence, all these things must
> also be performed when a byte-compiled function calls directly another
> byte-compiled function, as you suggest,

Yes, we'd have to duplicate some code and we can't eliminate all
the overhead.  Like all optimizations, it's difficult to know beforehand
whether it will be worthwhile, but I think there are some significant
savings to be had.

In the same area, providing some way to do tail-call-optimization would
be very welcome (tho only for lexical-binding code).


        Stefan



  reply	other threads:[~2012-05-15 13:55 UTC|newest]

Thread overview: 103+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-05-05  6:30 lexical-binding questions Thierry Volpiatto
2012-05-05  6:45 ` Thierry Volpiatto
2012-05-05  8:16   ` BEGIN_SRC..END_SRC (was: lexical-binding questions) Eli Zaretskii
2012-05-05  8:39     ` BEGIN_SRC..END_SRC Tom Rauchenwald
2012-05-05  8:54       ` BEGIN_SRC..END_SRC Eli Zaretskii
2012-05-05 13:38         ` BEGIN_SRC..END_SRC Bastien
2012-05-05 17:02           ` BEGIN_SRC..END_SRC Eli Zaretskii
2012-05-06 16:03             ` BEGIN_SRC..END_SRC Bastien
2012-05-06 16:46               ` BEGIN_SRC..END_SRC Eli Zaretskii
2012-05-06 17:03                 ` BEGIN_SRC..END_SRC Lars Magne Ingebrigtsen
2012-05-05 14:35         ` BEGIN_SRC..END_SRC Drew Adams
2012-05-05 15:10           ` BEGIN_SRC..END_SRC Antoine Levitt
2012-05-05 15:57             ` BEGIN_SRC..END_SRC Drew Adams
2012-05-05 17:00               ` BEGIN_SRC..END_SRC Peter Münster
2012-05-05 17:35                 ` BEGIN_SRC..END_SRC Drew Adams
2012-05-05 21:38                 ` BEGIN_SRC..END_SRC John Wiegley
2012-05-07  2:25                   ` BEGIN_SRC..END_SRC Ted Zlatanov
2012-05-07  6:23                     ` BEGIN_SRC..END_SRC Miles Bader
2012-05-07  9:37                       ` BEGIN_SRC..END_SRC Thien-Thi Nguyen
2012-05-06 14:17               ` BEGIN_SRC..END_SRC Ted Zlatanov
2012-05-05 15:48           ` BEGIN_SRC..END_SRC Yann Hodique
2012-05-05 16:43             ` BEGIN_SRC..END_SRC Stephen J. Turnbull
2012-05-05 17:12               ` BEGIN_SRC..END_SRC Yann Hodique
2012-05-07  8:57                 ` BEGIN_SRC..END_SRC Julien Danjou
2012-05-07  9:46                   ` BEGIN_SRC..END_SRC Yann Hodique
2012-05-05 17:36               ` BEGIN_SRC..END_SRC Drew Adams
2012-05-05 19:48           ` BEGIN_SRC..END_SRC Martyn Jago
2012-05-05 20:00             ` BEGIN_SRC..END_SRC Drew Adams
2012-05-07  5:44             ` BEGIN_SRC..END_SRC Stephen J. Turnbull
2012-05-07 14:23               ` BEGIN_SRC..END_SRC Wolfgang Jenkner
2012-05-08  4:08                 ` BEGIN_SRC..END_SRC Stephen J. Turnbull
2012-05-08  7:37                   ` BEGIN_SRC..END_SRC Bastien
2012-05-08 11:41                     ` BEGIN_SRC..END_SRC Juanma Barranquero
2012-05-08 12:17                       ` BEGIN_SRC..END_SRC Stefan Monnier
2012-05-08 14:32                         ` BEGIN_SRC..END_SRC Andreas Röhler
2012-05-09  1:23                           ` BEGIN_SRC..END_SRC Stephen J. Turnbull
2012-05-09 17:31                             ` BEGIN_SRC..END_SRC Stefan Monnier
2012-05-09  0:47                         ` BEGIN_SRC..END_SRC Ted Zlatanov
2012-05-09  3:50                           ` BEGIN_SRC..END_SRC Miles Bader
2012-05-09 11:35                             ` BEGIN_SRC..END_SRC Ted Zlatanov
2012-05-09 12:23                               ` BEGIN_SRC..END_SRC Stephen J. Turnbull
2012-05-09 13:43                                 ` BEGIN_SRC..END_SRC Lars Magne Ingebrigtsen
2012-05-09 14:57                                   ` BEGIN_SRC..END_SRC Eric Schulte
2012-05-09 17:08                                     ` BEGIN_SRC..END_SRC Yann Hodique
2012-05-09 16:06                                       ` BEGIN_SRC..END_SRC Eric Schulte
2012-05-09 18:20                                         ` BEGIN_SRC..END_SRC Yann Hodique
2012-05-09 16:30                                           ` BEGIN_SRC..END_SRC Eric Schulte
2012-05-09 18:44                                             ` BEGIN_SRC..END_SRC Yann Hodique
2012-05-10  7:44                                         ` BEGIN_SRC..END_SRC Stephen J. Turnbull
2012-05-10  7:28                                     ` BEGIN_SRC..END_SRC Stephen J. Turnbull
2012-05-10  7:59                                       ` BEGIN_SRC..END_SRC Yann Hodique
2012-05-10 12:35                                         ` BEGIN_SRC..END_SRC Stephen J. Turnbull
2012-05-10 13:28                                           ` BEGIN_SRC..END_SRC Yann Hodique
2012-05-10 13:51                                           ` BEGIN_SRC..END_SRC Miles Bader
2012-05-15  3:30                                             ` BEGIN_SRC..END_SRC Stephen J. Turnbull
2012-05-10 15:21                                           ` BEGIN_SRC..END_SRC Davis Herring
2012-05-15  3:56                                             ` BEGIN_SRC..END_SRC Stephen J. Turnbull
2012-05-10  9:02                                       ` BEGIN_SRC..END_SRC René Kyllingstad
2012-05-10 13:05                                         ` BEGIN_SRC..END_SRC Stephen J. Turnbull
2012-05-10 13:55                                           ` BEGIN_SRC..END_SRC René Kyllingstad
2012-05-15  3:52                                             ` BEGIN_SRC..END_SRC Stephen J. Turnbull
2012-05-16 14:00                                   ` BEGIN_SRC..END_SRC Ted Zlatanov
2012-05-09 13:52                               ` BEGIN_SRC..END_SRC Tassilo Horn
2012-05-09 17:44                                 ` BEGIN_SRC..END_SRC Tassilo Horn
2012-05-09 17:33                               ` BEGIN_SRC..END_SRC Stefan Monnier
2012-05-09  4:45                           ` BEGIN_SRC..END_SRC Eli Zaretskii
2012-05-09  6:28                           ` BEGIN_SRC..END_SRC Tassilo Horn
2012-05-09  9:30                             ` BEGIN_SRC..END_SRC Peter Münster
2012-06-08  0:20                               ` BEGIN_SRC..END_SRC Lars Magne Ingebrigtsen
2012-05-09 17:36                           ` BEGIN_SRC..END_SRC Stefan Monnier
2012-05-10  0:56                             ` BEGIN_SRC..END_SRC Miles Bader
2012-05-16 14:51                             ` BEGIN_SRC..END_SRC Ted Zlatanov
2012-05-16 13:05                               ` BEGIN_SRC..END_SRC Eric Schulte
2012-05-16 15:17                                 ` plain-text markdown handler for Gnus (was: BEGIN_SRC..END_SRC) Ted Zlatanov
2012-05-16 14:21                                   ` plain-text markdown handler for Gnus Eric Schulte
2012-05-16 16:29                                     ` Ted Zlatanov
2012-05-06 14:15           ` BEGIN_SRC..END_SRC Ted Zlatanov
2012-05-06 14:18             ` BEGIN_SRC..END_SRC Lennart Borgman
2012-05-06 14:33               ` BEGIN_SRC..END_SRC Alan Mackenzie
2012-05-06 14:43                 ` BEGIN_SRC..END_SRC Lennart Borgman
2012-05-06 18:57               ` BEGIN_SRC..END_SRC Ted Zlatanov
2012-05-06 23:20                 ` BEGIN_SRC..END_SRC Lennart Borgman
2012-05-07  2:21                   ` BEGIN_SRC..END_SRC Ted Zlatanov
2012-05-07  9:56                     ` BEGIN_SRC..END_SRC Lennart Borgman
2012-05-07 11:04                 ` BEGIN_SRC..END_SRC Stephen J. Turnbull
2012-05-05 13:29   ` lexical-binding questions Stefan Monnier
2012-05-05 17:59     ` Thierry Volpiatto
2012-05-06  0:08     ` Miles Bader
2012-05-06  2:43       ` Stefan Monnier
2012-05-06  6:00     ` Thierry Volpiatto
2012-05-05 13:26 ` Stefan Monnier
2012-05-05 15:57   ` Thierry Volpiatto
2012-05-07 15:19     ` Stefan Monnier
2012-05-07 15:39       ` Drew Adams
2012-05-15  6:40       ` egnarts-ms
2012-05-15 13:55         ` Stefan Monnier [this message]
2012-05-14  3:57 ` egnarts-ms
2012-05-14  4:55   ` Stefan Monnier
2012-05-14 17:09     ` Johan Bockgård
2012-05-15 17:54       ` egnarts-ms
2012-05-15 20:14         ` Stefan Monnier
2012-05-15 22:59           ` Johan Bockgård
2012-05-16  2:05             ` Stefan Monnier

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

  List information: https://www.gnu.org/software/emacs/

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

  git send-email \
    --in-reply-to=jwvehqlr20u.fsf-monnier+emacs@gnu.org \
    --to=monnier@iro.umontreal.ca \
    --cc=Emacs-devel@gnu.org \
    --cc=egnartsms@gmail.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.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

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).