unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Dmitry Antipov <dmantipov@yandex.ru>
To: Stefan Monnier <monnier@IRO.UMontreal.CA>
Cc: emacs-devel@gnu.org
Subject: Re: [Emacs-diffs] /srv/bzr/emacs/trunk r109327: Generalize INTERNAL_FIELD between buffers, keyboards and frames.
Date: Thu, 02 Aug 2012 08:12:29 +0400	[thread overview]
Message-ID: <5019FE2D.2060005@yandex.ru> (raw)
In-Reply-To: <jwvboiu2n17.fsf-monnier+emacs@gnu.org>

On 08/02/2012 03:52 AM, Stefan Monnier wrote:

> Then, please undo your changes.  The INTERNAL_FIELD part is fine, but
> the new FVAR, WVAR, ... are not.  Maybe it can be useful as an
> intermediate step on some separate generational-gc branch, but it
> doesn't have its place in trunk:

Look at concurrency branch. Everyone agrees that this is an interesting
and useful feature, but no one wants to handle an endless merging efforts.
If we had the same amount of developers as involved in Linux kernel, it's
the only possible practice to maintain 100 branches or even separate
trees for each major feature; for us, everything which is not in trunk
is the candidate to throw and forget, and large amount of code increases
the probability of such an inglorious end.

> I can't think of any way to make such
> macros give realistic performance with anything but a write-barrier, so
> such macros will only ever be needed for write accesses and never for
> read-accesses.
> So you're obfuscating the read-accesses (i.e. the most common case) for
> no good reason.
> I'm OK with introducing such macros to *set* such fields (i.e. for write
> barriers), but not to read them (at least not until there's a really
> good case for them).

Really good case comes very quickly when you start the real debugging.
Things like FVAR are very helpful to trace _all_ accesses to Lisp_Object
members; when FVARs will be converted to rvalues and SETFVARs will be
used appropriately, this guarantees that no pointer stores bypasses
the barrier (just one such a store is fatal for the collector). Next,
when we will know that the collector invariant is never broken, it's
possible to replace these obfuscated FVAR (x, y) back to x->y.

Again, this is a kind of chicken-egg problem: it's very hard to design
GC bits without supporting infrastructure implemented, and no one wants
to deal with obfuscated internal things in the absence of visible
advantages provided by new GC. IMHO the only solution is to suffer
some obfuscation until it becomes really useful.

Dmitry



  reply	other threads:[~2012-08-02  4:12 UTC|newest]

Thread overview: 43+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <E1SwCK8-0001PC-3m@vcs.savannah.gnu.org>
2012-08-01 10:33 ` [Emacs-diffs] /srv/bzr/emacs/trunk r109327: Generalize INTERNAL_FIELD between buffers, keyboards and frames Stefan Monnier
2012-08-01 12:04   ` Dmitry Antipov
2012-08-01 14:58     ` Paul Eggert
2012-08-01 16:52       ` Dmitry Antipov
2012-08-01 17:38       ` Tom Tromey
2012-08-01 21:04         ` Paul Eggert
2012-08-02  5:28         ` Stephen J. Turnbull
2012-08-01 15:01     ` Eli Zaretskii
2012-08-01 18:02       ` Dmitry Antipov
2012-08-02 15:28         ` Eli Zaretskii
2012-08-01 23:52     ` Stefan Monnier
2012-08-02  4:12       ` Dmitry Antipov [this message]
2012-08-02  5:56         ` Stephen J. Turnbull
2012-08-02  7:47           ` Dmitry Antipov
2012-08-02  9:30             ` Juanma Barranquero
2012-08-02 16:07             ` Eli Zaretskii
2012-08-02 15:45           ` Eli Zaretskii
2012-08-02 21:28             ` Paul Eggert
2012-08-03  6:27               ` Eli Zaretskii
2012-08-03  6:52                 ` Paul Eggert
2012-08-02 23:38           ` Richard Stallman
2012-08-02 15:34         ` Eli Zaretskii
2012-08-03  7:42         ` Stefan Monnier
2012-08-03  8:31           ` Dmitry Antipov
2012-08-03 18:58             ` Paul Eggert
2012-08-03 22:52               ` Stefan Monnier
2012-08-04 16:31                 ` Paul Eggert
2012-08-05 15:03                   ` Dmitry Antipov
2012-08-06 10:54                     ` Stefan Monnier
2012-08-06 11:44                       ` Dmitry Antipov
2012-08-06 16:31                         ` Stefan Monnier
2012-08-06 17:43                           ` Stefan Monnier
2012-08-08  7:22                         ` Chong Yidong
2012-08-05 14:59               ` Dmitry Antipov
2012-08-05 15:23                 ` Paul Eggert
2012-08-05 20:29                   ` Miles Bader
2012-08-03 22:50             ` Stefan Monnier
2012-08-03 23:11               ` Wojciech Meyer
2012-08-08  3:39           ` Chong Yidong
2012-08-08  7:14             ` Dmitry Antipov
2012-08-08  7:46               ` Chong Yidong
2012-08-08 10:18                 ` Dmitry Antipov
2012-08-08 12:41             ` 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=5019FE2D.2060005@yandex.ru \
    --to=dmantipov@yandex.ru \
    --cc=emacs-devel@gnu.org \
    --cc=monnier@IRO.UMontreal.CA \
    /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).