Avoid marking too deep portions of stack in mark_stack.
authorEli Zaretskii <eliz@gnu.org>
Sat, 24 May 2014 12:02:25 +0000 (15:02 +0300)
committerEli Zaretskii <eliz@gnu.org>
Sat, 24 May 2014 12:02:25 +0000 (15:02 +0300)
commitc94e3311ecf51bf3c6017ab4028debcae2a5dd6e
tree3ffd9fdea9c001a76fd1166f4d158b32cf662ab3
parenta235163a6908136abd3f4574caf6e8b9a0c7dcf9
Avoid marking too deep portions of stack in mark_stack.

 src/alloc.c (garbage_collect_1): New function, with all of the guts
 of Fgarbage_collect.
 (mark_stack): Accept an argument END and don't mark Lisp objects
 on the stack beyond the address given by END.  Calculation of END
 was moved to Fgarbage_collect.
 (Fgarbage_collect): Calculate the end address of the stack portion
 that needs to be examined by mark_stack, and pass that address to
 garbage_collect_1, which will pass it to mark_stack. See
 http://lists.gnu.org/archive/html/emacs-devel/2014-05/msg00270.html
 for more details about the underlying problems.  In particular,
 this avoids dumping Emacs with the large hash-table whose value is
 held in purify-flag for most of the time loadup.el runs.
src/ChangeLog
src/alloc.c