emacs-diffs
[Top][All Lists]
Advanced

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

[Emacs-diffs] master db64a86: Port to 32-bit sparc64


From: Paul Eggert
Subject: [Emacs-diffs] master db64a86: Port to 32-bit sparc64
Date: Tue, 20 Mar 2018 12:55:07 -0400 (EDT)

branch: master
commit db64a866f6971c5d63565253c0c8d8db15d4a4dc
Author: Paul Eggert <address@hidden>
Commit: Paul Eggert <address@hidden>

    Port to 32-bit sparc64
    
    Problem reported by Ulrich Mueller; fix suggested by Eli Zaretskii
    and Andreas Schwab (Bug#30855).
    * src/alloc.c (mark_memory): Call mark_maybe_object only on
    pointers that are properly aligned for Lisp_Object.
---
 src/alloc.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/src/alloc.c b/src/alloc.c
index f97b99c..da01173 100644
--- a/src/alloc.c
+++ b/src/alloc.c
@@ -4981,7 +4981,11 @@ mark_memory (void *start, void *end)
   for (pp = start; (void *) pp < end; pp += GC_POINTER_ALIGNMENT)
     {
       mark_maybe_pointer (*(void **) pp);
-      mark_maybe_object (*(Lisp_Object *) pp);
+
+      verify (alignof (Lisp_Object) % GC_POINTER_ALIGNMENT == 0);
+      if (alignof (Lisp_Object) == GC_POINTER_ALIGNMENT
+         || (uintptr_t) pp % alignof (Lisp_Object) == 0)
+       mark_maybe_object (*(Lisp_Object *) pp);
     }
 }
 



reply via email to

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