aboutsummaryrefslogtreecommitdiffstats
path: root/src/alloc.c
diff options
context:
space:
mode:
authorRichard M. Stallman2002-08-07 14:37:32 +0000
committerRichard M. Stallman2002-08-07 14:37:32 +0000
commit1342fc6f040231b986ee2daddeb905bf89a8af84 (patch)
tree443dab63e3db09b4169c64478edfed93503ac25e /src/alloc.c
parent3622bdf9a42bcfd6d09418fcdfa2695e75f65269 (diff)
downloademacs-1342fc6f040231b986ee2daddeb905bf89a8af84.tar.gz
emacs-1342fc6f040231b986ee2daddeb905bf89a8af84.zip
(mark_object): Detect long lists for debugging.
(mark_object_loop_halt): New variable.
Diffstat (limited to 'src/alloc.c')
-rw-r--r--src/alloc.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/alloc.c b/src/alloc.c
index b8d54ee3ba9..1d7c9044c7c 100644
--- a/src/alloc.c
+++ b/src/alloc.c
@@ -4427,6 +4427,12 @@ mark_image_cache (f)
4427Lisp_Object *last_marked[LAST_MARKED_SIZE]; 4427Lisp_Object *last_marked[LAST_MARKED_SIZE];
4428int last_marked_index; 4428int last_marked_index;
4429 4429
4430/* For debugging--call abort when we cdr down this many
4431 links of a list, in mark_object. In debugging,
4432 the call to abort will hit a breakpoint.
4433 Normally this is zero and the check never goes off. */
4434int mark_object_loop_halt;
4435
4430void 4436void
4431mark_object (argptr) 4437mark_object (argptr)
4432 Lisp_Object *argptr; 4438 Lisp_Object *argptr;
@@ -4437,6 +4443,7 @@ mark_object (argptr)
4437 void *po; 4443 void *po;
4438 struct mem_node *m; 4444 struct mem_node *m;
4439#endif 4445#endif
4446 int cdr_count = 0;
4440 4447
4441 loop: 4448 loop:
4442 obj = *objptr; 4449 obj = *objptr;
@@ -4790,10 +4797,14 @@ mark_object (argptr)
4790 if (EQ (ptr->cdr, Qnil)) 4797 if (EQ (ptr->cdr, Qnil))
4791 { 4798 {
4792 objptr = &ptr->car; 4799 objptr = &ptr->car;
4800 cdr_count = 0;
4793 goto loop; 4801 goto loop;
4794 } 4802 }
4795 mark_object (&ptr->car); 4803 mark_object (&ptr->car);
4796 objptr = &ptr->cdr; 4804 objptr = &ptr->cdr;
4805 cdr_count++;
4806 if (cdr_count == mark_object_loop_halt)
4807 abort ();
4797 goto loop; 4808 goto loop;
4798 } 4809 }
4799 4810