[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] /srv/bzr/emacs/trunk r109917: * alloc.c (mark_buffer): Rev
From: |
Dmitry Antipov |
Subject: |
[Emacs-diffs] /srv/bzr/emacs/trunk r109917: * alloc.c (mark_buffer): Revert unsafe marking optimization. |
Date: |
Fri, 07 Sep 2012 11:05:56 +0400 |
User-agent: |
Bazaar (2.5.0) |
------------------------------------------------------------
revno: 109917
committer: Dmitry Antipov <address@hidden>
branch nick: trunk
timestamp: Fri 2012-09-07 11:05:56 +0400
message:
* alloc.c (mark_buffer): Revert unsafe marking optimization.
(mark_object): Likewise for frame objects.
modified:
src/ChangeLog
src/alloc.c
=== modified file 'src/ChangeLog'
--- a/src/ChangeLog 2012-09-07 06:47:30 +0000
+++ b/src/ChangeLog 2012-09-07 07:05:56 +0000
@@ -1,3 +1,8 @@
+2012-09-07 Dmitry Antipov <address@hidden>
+
+ * alloc.c (mark_buffer): Revert unsafe marking optimization.
+ (mark_object): Likewise for frame objects.
+
2012-09-07 Paul Eggert <address@hidden>
* syssignal.h (handle_on_main_thread): Always declare,
=== modified file 'src/alloc.c'
--- a/src/alloc.c 2012-09-07 01:27:44 +0000
+++ b/src/alloc.c 2012-09-07 07:05:56 +0000
@@ -5842,29 +5842,23 @@
static void
mark_buffer (struct buffer *buffer)
{
- if (NILP (BVAR (buffer, name)))
- /* If the buffer is killed, mark just the buffer itself. */
- VECTOR_MARK (buffer);
- else
- {
- /* This is handled much like other pseudovectors... */
- mark_vectorlike ((struct Lisp_Vector *) buffer);
-
- /* ...but there are some buffer-specific things. */
-
- MARK_INTERVAL_TREE (buffer_intervals (buffer));
-
- /* For now, we just don't mark the undo_list. It's done later in
- a special way just before the sweep phase, and after stripping
- some of its elements that are not needed any more. */
-
- mark_overlay (buffer->overlays_before);
- mark_overlay (buffer->overlays_after);
-
- /* If this is an indirect buffer, mark its base buffer. */
- if (buffer->base_buffer && !VECTOR_MARKED_P (buffer->base_buffer))
- mark_buffer (buffer->base_buffer);
- }
+ /* This is handled much like other pseudovectors... */
+ mark_vectorlike ((struct Lisp_Vector *) buffer);
+
+ /* ...but there are some buffer-specific things. */
+
+ MARK_INTERVAL_TREE (buffer_intervals (buffer));
+
+ /* For now, we just don't mark the undo_list. It's done later in
+ a special way just before the sweep phase, and after stripping
+ some of its elements that are not needed any more. */
+
+ mark_overlay (buffer->overlays_before);
+ mark_overlay (buffer->overlays_after);
+
+ /* If this is an indirect buffer, mark its base buffer. */
+ if (buffer->base_buffer && !VECTOR_MARKED_P (buffer->base_buffer))
+ mark_buffer (buffer->base_buffer);
}
/* Determine type of generic Lisp_Object and mark it accordingly. */
@@ -6003,26 +5997,14 @@
break;
case PVEC_FRAME:
- {
- struct frame *f = (struct frame *) ptr;
-
- if (FRAME_LIVE_P (f))
- {
- mark_vectorlike (ptr);
- mark_face_cache (f->face_cache);
- }
- else
- /* If the frame is deleted, mark just the frame itself. */
- VECTOR_MARK (ptr);
- }
+ mark_vectorlike (ptr);
+ mark_face_cache (((struct frame *) ptr)->face_cache);
break;
case PVEC_WINDOW:
{
struct window *w = (struct window *) ptr;
-
- /* Even if the window is deleted, we can't mark just the window
- itself because set-window-configuration can resurrect it. */
+
mark_vectorlike (ptr);
/* Mark glyphs for leaf windows. Marking window
matrices is sufficient because frame matrices
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] /srv/bzr/emacs/trunk r109917: * alloc.c (mark_buffer): Revert unsafe marking optimization.,
Dmitry Antipov <=