diff options
| author | Karoly Lorentey | 2006-12-03 15:03:30 +0000 |
|---|---|---|
| committer | Karoly Lorentey | 2006-12-03 15:03:30 +0000 |
| commit | 974b73e83842d63b14512aa225cc53983a9b5d14 (patch) | |
| tree | 462170d38cbb7057e98f08e8c612a9d30eeea0fd /src/alloc.c | |
| parent | d0104e754a241cf83811fef30195d41201de533c (diff) | |
| parent | f5be22a273892218aad1db32c43ba562a08f3925 (diff) | |
| download | emacs-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.c | 22 |
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 *)); | |||
| 480 | static int live_float_p P_ ((struct mem_node *, void *)); | 480 | static int live_float_p P_ ((struct mem_node *, void *)); |
| 481 | static int live_misc_p P_ ((struct mem_node *, void *)); | 481 | static int live_misc_p P_ ((struct mem_node *, void *)); |
| 482 | static void mark_maybe_object P_ ((Lisp_Object)); | 482 | static void mark_maybe_object P_ ((Lisp_Object)); |
| 483 | static void mark_memory P_ ((void *, void *)); | 483 | static void mark_memory P_ ((void *, void *, int)); |
| 484 | static void mem_init P_ ((void)); | 484 | static void mem_init P_ ((void)); |
| 485 | static struct mem_node *mem_insert P_ ((void *, void *, enum mem_type)); | 485 | static struct mem_node *mem_insert P_ ((void *, void *, enum mem_type)); |
| 486 | static void mem_insert_fixup P_ ((struct mem_node *)); | 486 | static 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 | ||
| 4335 | static void | 4336 | static void |
| 4336 | mark_memory (start, end) | 4337 | mark_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 | |||
| 4553 | mark_stack () | 4555 | mark_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 |