aboutsummaryrefslogtreecommitdiffstats
path: root/src/alloc.c
diff options
context:
space:
mode:
authorKaroly Lorentey2006-12-03 15:03:30 +0000
committerKaroly Lorentey2006-12-03 15:03:30 +0000
commit974b73e83842d63b14512aa225cc53983a9b5d14 (patch)
tree462170d38cbb7057e98f08e8c612a9d30eeea0fd /src/alloc.c
parentd0104e754a241cf83811fef30195d41201de533c (diff)
parentf5be22a273892218aad1db32c43ba562a08f3925 (diff)
downloademacs-974b73e83842d63b14512aa225cc53983a9b5d14.tar.gz
emacs-974b73e83842d63b14512aa225cc53983a9b5d14.zip
Merged from emacs@sv.gnu.org. Last-minute emacsclient rewrites be damned!
Patches applied: * emacs@sv.gnu.org/emacs--devo--0--patch-490 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-491 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-492 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-493 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-494 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-495 Merge from gnus--rel--5.10 * emacs@sv.gnu.org/emacs--devo--0--patch-496 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-497 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-498 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-499 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-500 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-501 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-502 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-503 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-504 Merge from gnus--rel--5.10 * emacs@sv.gnu.org/emacs--devo--0--patch-505 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-506 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-507 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-508 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-509 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-510 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-511 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-512 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-513 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-514 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-515 Merge from gnus--rel--5.10 * emacs@sv.gnu.org/emacs--devo--0--patch-516 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-517 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-518 Merge from gnus--rel--5.10 * emacs@sv.gnu.org/emacs--devo--0--patch-519 Update from CVS: etc/TUTORIAL.cn: Updated. * emacs@sv.gnu.org/emacs--devo--0--patch-520 Merge from erc--emacs--22 * emacs@sv.gnu.org/emacs--devo--0--patch-521 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-522 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-523 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-524 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-525 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-526 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-527 Merge from gnus--rel--5.10 * emacs@sv.gnu.org/emacs--devo--0--patch-528 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-529 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-530 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-531 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-532 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-533 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-534 Merge from gnus--rel--5.10 * emacs@sv.gnu.org/emacs--devo--0--patch-535 Update from CVS * emacs@sv.gnu.org/gnus--rel--5.10--patch-161 Update from CVS * emacs@sv.gnu.org/gnus--rel--5.10--patch-162 Update from CVS * emacs@sv.gnu.org/gnus--rel--5.10--patch-163 Merge from emacs--devo--0 * emacs@sv.gnu.org/gnus--rel--5.10--patch-164 Update from CVS * emacs@sv.gnu.org/gnus--rel--5.10--patch-165 Update from CVS * emacs@sv.gnu.org/gnus--rel--5.10--patch-166 Update from CVS * emacs@sv.gnu.org/gnus--rel--5.10--patch-167 Update from CVS * emacs@sv.gnu.org/gnus--rel--5.10--patch-168 Update from CVS * emacs@sv.gnu.org/gnus--rel--5.10--patch-169 Merge from emacs--devo--0 * emacs@sv.gnu.org/gnus--rel--5.10--patch-170 Update from CVS git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-588
Diffstat (limited to 'src/alloc.c')
-rw-r--r--src/alloc.c22
1 files changed, 14 insertions, 8 deletions
diff --git a/src/alloc.c b/src/alloc.c
index 2f186fd3d12..c49d3b5becc 100644
--- a/src/alloc.c
+++ b/src/alloc.c
@@ -480,7 +480,7 @@ static int live_symbol_p P_ ((struct mem_node *, void *));
480static int live_float_p P_ ((struct mem_node *, void *)); 480static int live_float_p P_ ((struct mem_node *, void *));
481static int live_misc_p P_ ((struct mem_node *, void *)); 481static int live_misc_p P_ ((struct mem_node *, void *));
482static void mark_maybe_object P_ ((Lisp_Object)); 482static void mark_maybe_object P_ ((Lisp_Object));
483static void mark_memory P_ ((void *, void *)); 483static void mark_memory P_ ((void *, void *, int));
484static void mem_init P_ ((void)); 484static void mem_init P_ ((void));
485static struct mem_node *mem_insert P_ ((void *, void *, enum mem_type)); 485static struct mem_node *mem_insert P_ ((void *, void *, enum mem_type));
486static void mem_insert_fixup P_ ((struct mem_node *)); 486static void mem_insert_fixup P_ ((struct mem_node *));
@@ -4330,11 +4330,13 @@ mark_maybe_pointer (p)
4330} 4330}
4331 4331
4332 4332
4333/* Mark Lisp objects referenced from the address range START..END. */ 4333/* Mark Lisp objects referenced from the address range START+OFFSET..END
4334 or END+OFFSET..START. */
4334 4335
4335static void 4336static void
4336mark_memory (start, end) 4337mark_memory (start, end, offset)
4337 void *start, *end; 4338 void *start, *end;
4339 int offset;
4338{ 4340{
4339 Lisp_Object *p; 4341 Lisp_Object *p;
4340 void **pp; 4342 void **pp;
@@ -4353,7 +4355,7 @@ mark_memory (start, end)
4353 } 4355 }
4354 4356
4355 /* Mark Lisp_Objects. */ 4357 /* Mark Lisp_Objects. */
4356 for (p = (Lisp_Object *) start; (void *) p < end; ++p) 4358 for (p = (Lisp_Object *) ((char *) start + offset); (void *) p < end; ++p)
4357 mark_maybe_object (*p); 4359 mark_maybe_object (*p);
4358 4360
4359 /* Mark Lisp data pointed to. This is necessary because, in some 4361 /* Mark Lisp data pointed to. This is necessary because, in some
@@ -4374,7 +4376,7 @@ mark_memory (start, end)
4374 away. The only reference to the life string is through the 4376 away. The only reference to the life string is through the
4375 pointer `s'. */ 4377 pointer `s'. */
4376 4378
4377 for (pp = (void **) start; (void *) pp < end; ++pp) 4379 for (pp = (void **) ((char *) start + offset); (void *) pp < end; ++pp)
4378 mark_maybe_pointer (*pp); 4380 mark_maybe_pointer (*pp);
4379} 4381}
4380 4382
@@ -4553,7 +4555,11 @@ static void
4553mark_stack () 4555mark_stack ()
4554{ 4556{
4555 int i; 4557 int i;
4556 jmp_buf j; 4558 /* jmp_buf may not be aligned enough on darwin-ppc64 */
4559 union aligned_jmpbuf {
4560 Lisp_Object o;
4561 jmp_buf j;
4562 } j;
4557 volatile int stack_grows_down_p = (char *) &j > (char *) stack_base; 4563 volatile int stack_grows_down_p = (char *) &j > (char *) stack_base;
4558 void *end; 4564 void *end;
4559 4565
@@ -4584,7 +4590,7 @@ mark_stack ()
4584 } 4590 }
4585#endif /* GC_SETJMP_WORKS */ 4591#endif /* GC_SETJMP_WORKS */
4586 4592
4587 setjmp (j); 4593 setjmp (j.j);
4588 end = stack_grows_down_p ? (char *) &j + sizeof j : (char *) &j; 4594 end = stack_grows_down_p ? (char *) &j + sizeof j : (char *) &j;
4589#endif /* not GC_SAVE_REGISTERS_ON_STACK */ 4595#endif /* not GC_SAVE_REGISTERS_ON_STACK */
4590 4596
@@ -4599,7 +4605,7 @@ mark_stack ()
4599#endif 4605#endif
4600#endif 4606#endif
4601 for (i = 0; i < sizeof (Lisp_Object); i += GC_LISP_OBJECT_ALIGNMENT) 4607 for (i = 0; i < sizeof (Lisp_Object); i += GC_LISP_OBJECT_ALIGNMENT)
4602 mark_memory ((char *) stack_base + i, end); 4608 mark_memory (stack_base, end, i);
4603 /* Allow for marking a secondary stack, like the register stack on the 4609 /* Allow for marking a secondary stack, like the register stack on the
4604 ia64. */ 4610 ia64. */
4605#ifdef GC_MARK_SECONDARY_STACK 4611#ifdef GC_MARK_SECONDARY_STACK