emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] master f39141b 1/8: Merge from origin/emacs-25


From: Paul Eggert
Subject: [Emacs-diffs] master f39141b 1/8: Merge from origin/emacs-25
Date: Sun, 23 Oct 2016 09:58:39 +0000 (UTC)

branch: master
commit f39141b786525700c2619e5731c166e294265888
Merge: 241ae7a 2deb20c
Author: Paul Eggert <address@hidden>
Commit: Paul Eggert <address@hidden>

    Merge from origin/emacs-25
    
    2deb20c Port last_marked change to full-program optimizers
    27eb668 Adapt GDB scripts to '--enable-check-lisp-object-type' builds
    dac64e3 Avoid optimizing out the last_marked[] array
---
 etc/emacs-buffer.gdb |   36 +++++++++++++++++++++++++-----------
 src/.gdbinit         |    3 +--
 src/alloc.c          |    2 +-
 3 files changed, 27 insertions(+), 14 deletions(-)

diff --git a/etc/emacs-buffer.gdb b/etc/emacs-buffer.gdb
index 7102dc6..61b06f2 100644
--- a/etc/emacs-buffer.gdb
+++ b/etc/emacs-buffer.gdb
@@ -70,8 +70,10 @@
 
 # Code:
 
-# Force loading of symbols, enough to give us VALMASK etc.
-set main
+# Force loading of symbols, enough to give us VALBITS etc.
+set $dummy = main + 8
+# With some compilers, we need this to give us struct Lisp_Symbol etc.:
+set $dummy = Fmake_symbol + 8
 
 # When nonzero, display some extra diagnostics in various commands
 set $yverbose = 1
@@ -82,6 +84,11 @@ define ygetptr
   set $ptr = (CHECK_LISP_OBJECT_TYPE ? $ptr.i : $ptr) & VALMASK
 end
 
+# Get the value of Qnil for comparison.  Needed when
+# CHECK_LISP_OBJECT_TYPE is non-zero.
+ygetptr Qnil
+set $qnil = $ptr
+
 define ybuffer-list
   set $files_only         = $yfile_buffers_only
   set $yfile_buffers_only = 0
@@ -93,10 +100,13 @@ define ybuffer-list
 
   set $i = 0
   set $alist = Vbuffer_alist
-  while $alist != Qnil
-    ygetptr $alist
+  ygetptr $alist
+  set $alist = $ptr
+  while $alist != $qnil
     set $this  = ((struct Lisp_Cons *) $ptr)->car
     set $alist = ((struct Lisp_Cons *) $ptr)->u.cdr
+    ygetptr $alist
+    set $alist = $ptr
 
     # Vbuffer_alist elts are pairs of the form (name . buffer)
     ygetptr $this
@@ -104,7 +114,9 @@ define ybuffer-list
     ygetptr $buf
     set $buf = (struct buffer *) $ptr
 
-    if ! ($files_only && $buf->filename_ == Qnil)
+    ygetptr $buf->filename_
+    set $fname = $ptr
+    if ! ($files_only && $fname == $qnil)
       ygetptr $buf->name_
       set $name = ((struct Lisp_String *) $ptr)->data
       set $modp = ($buf->text->modiff > $buf->text->save_modiff) ? '*' : ' '
@@ -112,11 +124,11 @@ define ybuffer-list
       ygetptr $buf->mode_name_
       set $mode = ((struct Lisp_String *) $ptr)->data
 
-      if $buf->filename_ != Qnil
+      if $fname != $qnil
         ygetptr $buf->filename_
         printf "%2d %c  %9d %-20s %-10s %s\n", \
                $i, $modp, ($buf->text->z_byte - 1), $name, $mode, \
-               ((struct Lisp_String *) $ptr)->data
+               ((struct Lisp_String *) $fname)->data
       else
         printf "%2d %c  %9d %-20s %-10s\n", \
                $i, $modp, ($buf->text->z_byte - 1), $name, $mode
@@ -146,15 +158,17 @@ define yset-buffer
   set $i = $arg0
 
   set $alist = Vbuffer_alist
-  while ($alist != Qnil && $i > 0)
-    ygetptr $alist
+  ygetptr $alist
+  set $alist = $ptr
+  while ($alist != $qnil && $i > 0)
     set $alist = ((struct Lisp_Cons *) $ptr)->u.cdr
+    ygetptr $alist
+    set $alist = $ptr
     set $i--
   end
 
   # Get car of alist; this is a pair (name . buffer)
-  ygetptr $alist
-  set $this = ((struct Lisp_Cons *) $ptr)->car
+  set $this = ((struct Lisp_Cons *) $alist)->car
 
   # Get the buffer object
   ygetptr $this
diff --git a/src/.gdbinit b/src/.gdbinit
index 8e7ac3c..b0c0dfd 100644
--- a/src/.gdbinit
+++ b/src/.gdbinit
@@ -1252,8 +1252,7 @@ break terminate_due_to_signal
 tbreak init_sys_modes
 commands
   silent
-  xgetptr globals.f_Vinitial_window_system
-  xsymname $ptr
+  xsymname globals.f_Vinitial_window_system
   xgetptr $symname
   set $tem = (struct Lisp_String *) $ptr
   set $tem = (char *) $tem->data
diff --git a/src/alloc.c b/src/alloc.c
index ab23072..a58dc13 100644
--- a/src/alloc.c
+++ b/src/alloc.c
@@ -6023,7 +6023,7 @@ mark_glyph_matrix (struct glyph_matrix *matrix)
    all the references contained in it.  */
 
 #define LAST_MARKED_SIZE 500
-static Lisp_Object last_marked[LAST_MARKED_SIZE];
+Lisp_Object last_marked[LAST_MARKED_SIZE] EXTERNALLY_VISIBLE;
 static int last_marked_index;
 
 /* For debugging--call abort when we cdr down this many



reply via email to

[Prev in Thread] Current Thread [Next in Thread]