diff options
| author | Stefan Monnier | 2010-12-10 19:13:08 -0500 |
|---|---|---|
| committer | Stefan Monnier | 2010-12-10 19:13:08 -0500 |
| commit | 2c302df3a13236bfbf8ea1b771d13618fcda8d71 (patch) | |
| tree | f26dc9f22861dc37610de319d05255de058c221b /src/alloc.c | |
| parent | 0c747cb143fa227e78f350ac353d703f489209df (diff) | |
| parent | 175069efeb080517afefdd44a06f7a779ea8c25c (diff) | |
| download | emacs-2c302df3a13236bfbf8ea1b771d13618fcda8d71.tar.gz emacs-2c302df3a13236bfbf8ea1b771d13618fcda8d71.zip | |
Merge from trunk
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 0f83f375d40..b18fd6feb3d 100644 --- a/src/alloc.c +++ b/src/alloc.c | |||
| @@ -351,7 +351,6 @@ enum mem_type | |||
| 351 | 351 | ||
| 352 | static POINTER_TYPE *lisp_align_malloc (size_t, enum mem_type); | 352 | static POINTER_TYPE *lisp_align_malloc (size_t, enum mem_type); |
| 353 | static POINTER_TYPE *lisp_malloc (size_t, enum mem_type); | 353 | static POINTER_TYPE *lisp_malloc (size_t, enum mem_type); |
| 354 | void refill_memory_reserve (void); | ||
| 355 | 354 | ||
| 356 | 355 | ||
| 357 | #if GC_MARK_STACK || defined GC_MALLOC_CHECK | 356 | #if GC_MARK_STACK || defined GC_MALLOC_CHECK |
| @@ -4043,8 +4042,14 @@ DEFUN ("gc-status", Fgc_status, Sgc_status, 0, 0, "", | |||
| 4043 | static INLINE void | 4042 | static INLINE void |
| 4044 | mark_maybe_object (Lisp_Object obj) | 4043 | mark_maybe_object (Lisp_Object obj) |
| 4045 | { | 4044 | { |
| 4046 | void *po = (void *) XPNTR (obj); | 4045 | void *po; |
| 4047 | struct mem_node *m = mem_find (po); | 4046 | struct mem_node *m; |
| 4047 | |||
| 4048 | if (INTEGERP (obj)) | ||
| 4049 | return; | ||
| 4050 | |||
| 4051 | po = (void *) XPNTR (obj); | ||
| 4052 | m = mem_find (po); | ||
| 4048 | 4053 | ||
| 4049 | if (m != MEM_NIL) | 4054 | if (m != MEM_NIL) |
| 4050 | { | 4055 | { |
| @@ -5694,13 +5699,14 @@ mark_terminals (void) | |||
| 5694 | for (t = terminal_list; t; t = t->next_terminal) | 5699 | for (t = terminal_list; t; t = t->next_terminal) |
| 5695 | { | 5700 | { |
| 5696 | eassert (t->name != NULL); | 5701 | eassert (t->name != NULL); |
| 5697 | if (!VECTOR_MARKED_P (t)) | ||
| 5698 | { | ||
| 5699 | #ifdef HAVE_WINDOW_SYSTEM | 5702 | #ifdef HAVE_WINDOW_SYSTEM |
| 5700 | mark_image_cache (t->image_cache); | 5703 | /* If a terminal object is reachable from a stacpro'ed object, |
| 5704 | it might have been marked already. Make sure the image cache | ||
| 5705 | gets marked. */ | ||
| 5706 | mark_image_cache (t->image_cache); | ||
| 5701 | #endif /* HAVE_WINDOW_SYSTEM */ | 5707 | #endif /* HAVE_WINDOW_SYSTEM */ |
| 5702 | mark_vectorlike ((struct Lisp_Vector *)t); | 5708 | if (!VECTOR_MARKED_P (t)) |
| 5703 | } | 5709 | mark_vectorlike ((struct Lisp_Vector *)t); |
| 5704 | } | 5710 | } |
| 5705 | } | 5711 | } |
| 5706 | 5712 | ||