From: Glenn Morris <rgm@gnu.org>
To: dmantipov@yandex.ru
Cc: emacs-devel@gnu.org
Subject: Re: [dmantipov@yandex.ru: Re: Your Emacs changes]
Date: Thu, 30 Aug 2007 23:01:14 -0400 [thread overview]
Message-ID: <v1tzqgjtl1.fsf@fencepost.gnu.org> (raw)
In-Reply-To: <E1IQeG2-0005Xq-LP@fencepost.gnu.org> (Richard Stallman's message of "Thu, 30 Aug 2007 03:16:02 -0400")
Please could you provide a ChangeLog entry for this.
> Probably the thing described at
> http://lists.gnu.org/archive/html/emacs-devel/2007-07/msg00094.html.
> Attached is the latest stuff on this.
[...]
> Index: alloc.c
> ===================================================================
> RCS file: /sources/emacs/emacs/src/alloc.c,v
> retrieving revision 1.414
> diff -u -r1.414 alloc.c
> - --- alloc.c 19 Aug 2007 00:15:26 -0000 1.414
> +++ alloc.c 21 Aug 2007 14:31:37 -0000
> @@ -5974,23 +5974,53 @@
>
> for (cblk = cons_block; cblk; cblk = *cprev)
> {
> - - register int i;
> + register int i = 0;
> int this_free = 0;
> - - for (i = 0; i < lim; i++)
> - - if (!CONS_MARKED_P (&cblk->conses[i]))
> - - {
> - - this_free++;
> - - cblk->conses[i].u.chain = cons_free_list;
> - - cons_free_list = &cblk->conses[i];
> +
> + while (1)
> + {
> + if (cblk->gcmarkbits[i] == -1)
> + {
> + /* Fast path - everything is marked. */
> + cblk->gcmarkbits[i++] = 0;
> + num_used += BITS_PER_INT;
> + }
> + else
> + {
> + /* Slow path - scan over each bit, from the beginning
> + of current word to 'min (word boundary, LIM)'. */
> + int start, stop;
> +
> + start = i * BITS_PER_INT;
> + stop = lim - start;
> + if (stop > BITS_PER_INT)
> + stop = BITS_PER_INT;
> + stop += start;
> +
> + while (start < stop)
> + {
> + if (!CONS_MARKED_P (&cblk->conses[start]))
> + {
> + this_free++;
> + cblk->conses[start].u.chain = cons_free_list;
> + cons_free_list = &cblk->conses[start];
> #if GC_MARK_STACK
> - - cons_free_list->car = Vdead;
> + cons_free_list->car = Vdead;
> #endif
> - - }
> - - else
> - - {
> - - num_used++;
> - - CONS_UNMARK (&cblk->conses[i]);
> - - }
> + }
> + else
> + {
> + num_used++;
> + CONS_UNMARK (&cblk->conses[start]);
> + }
> + start++;
> + }
> + if (stop < (++i) * BITS_PER_INT)
> + /* Whole bitmap is scanned or LIM is reached. */
> + break;
> + }
> + }
> +
> lim = CONS_BLOCK_SIZE;
> /* If this block contains only free conses and we have already
> seen more than two blocks worth of free conses then deallocate
>
> - --------------040802050101020103000601--
next prev parent reply other threads:[~2007-08-31 3:01 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-08-30 7:16 [dmantipov@yandex.ru: Re: Your Emacs changes] Richard Stallman
2007-08-31 3:01 ` Glenn Morris [this message]
2007-09-06 5:30 ` Glenn Morris
2007-09-16 2:43 ` Glenn Morris
2007-09-17 0:20 ` Richard Stallman
2007-09-17 0:59 ` Glenn Morris
2007-09-17 15:53 ` Richard Stallman
-- strict thread matches above, loose matches on Subject: below --
2007-08-22 3:15 Richard Stallman
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=v1tzqgjtl1.fsf@fencepost.gnu.org \
--to=rgm@gnu.org \
--cc=dmantipov@yandex.ru \
--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.