From: egnarts-ms <egnartsms@gmail.com>
To: Emacs-devel@gnu.org
Subject: Re: lexical-binding questions
Date: Mon, 14 May 2012 23:40:19 -0700 (PDT) [thread overview]
Message-ID: <33844651.post@talk.nabble.com> (raw)
In-Reply-To: <jwv8vh4uiy2.fsf-monnier+emacs@gnu.org>
Stefan Monnier wrote:
>
> A much more productive patch would be to speed up function calls from
> byte-code functions to byte-code functions by performing them without
> leaving the byte-code interpreter (currently the code does a ridiculous
> dance where the byte-code interpreter takes the args from the byte-code
> stack, passes them to Ffuncall which calls funcall_lambda which then
> calls exec_byte_code which sets up a new byte-code stack and copies the
> args to this new stack, to finally run the destination byte-code).
>
You know, it is not quite clear (at least to me) how it is possible to speed
up this mechanism. 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. So,
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;
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, 'cause otherwise Emacs's behavior
would be significantly changed. This creates additional difficulties, as
Ffuncall is located in "eval.c" (and exec_byte_code -- in "bytecode.c").
Maybe there's some info I'm not aware of, or just misunderstanding something
? I'm really interested in this question.
--
View this message in context: http://old.nabble.com/lexical-binding-questions-tp33799305p33844651.html
Sent from the Emacs - Dev mailing list archive at Nabble.com.
next prev parent reply other threads:[~2012-05-15 6:40 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 [this message]
2012-05-15 13:55 ` Stefan Monnier
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
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=33844651.post@talk.nabble.com \
--to=egnartsms@gmail.com \
--cc=Emacs-devel@gnu.org \
/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 external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.