aboutsummaryrefslogtreecommitdiffstats
path: root/src/alloc.c
diff options
context:
space:
mode:
authorKim F. Storm2004-06-24 22:02:23 +0000
committerKim F. Storm2004-06-24 22:02:23 +0000
commit7b7990cc6709b39c98d5f781daa47a2afe6a6f8b (patch)
tree46ccc51457657dc81bee2e57dff7d3977806c23a /src/alloc.c
parent69968400c3db984a9dc6b5a5b39441c021952bc9 (diff)
downloademacs-7b7990cc6709b39c98d5f781daa47a2afe6a6f8b.tar.gz
emacs-7b7990cc6709b39c98d5f781daa47a2afe6a6f8b.zip
(allocate_misc): Update total_free_markers.
(free_misc): New function. (safe_alloca_unwind, free_marker): Use it.
Diffstat (limited to 'src/alloc.c')
-rw-r--r--src/alloc.c23
1 files changed, 17 insertions, 6 deletions
diff --git a/src/alloc.c b/src/alloc.c
index 06f7eb6174e..7ec882f3dd3 100644
--- a/src/alloc.c
+++ b/src/alloc.c
@@ -590,6 +590,7 @@ safe_alloca_unwind (arg)
590 p->dogc = 0; 590 p->dogc = 0;
591 xfree (p->pointer); 591 xfree (p->pointer);
592 p->pointer = 0; 592 p->pointer = 0;
593 free_misc (arg);
593 return Qnil; 594 return Qnil;
594} 595}
595 596
@@ -2921,17 +2922,32 @@ allocate_misc ()
2921 marker_block = new; 2922 marker_block = new;
2922 marker_block_index = 0; 2923 marker_block_index = 0;
2923 n_marker_blocks++; 2924 n_marker_blocks++;
2925 total_free_markers += MARKER_BLOCK_SIZE;
2924 } 2926 }
2925 XSETMISC (val, &marker_block->markers[marker_block_index]); 2927 XSETMISC (val, &marker_block->markers[marker_block_index]);
2926 marker_block_index++; 2928 marker_block_index++;
2927 } 2929 }
2928 2930
2931 --total_free_markers;
2929 consing_since_gc += sizeof (union Lisp_Misc); 2932 consing_since_gc += sizeof (union Lisp_Misc);
2930 misc_objects_consed++; 2933 misc_objects_consed++;
2931 XMARKER (val)->gcmarkbit = 0; 2934 XMARKER (val)->gcmarkbit = 0;
2932 return val; 2935 return val;
2933} 2936}
2934 2937
2938/* Free a Lisp_Misc object */
2939
2940void
2941free_misc (misc)
2942 Lisp_Object misc;
2943{
2944 XMISC (misc)->u_marker.type = Lisp_Misc_Free;
2945 XMISC (misc)->u_free.chain = marker_free_list;
2946 marker_free_list = XMISC (misc);
2947
2948 total_free_markers++;
2949}
2950
2935/* Return a Lisp_Misc_Save_Value object containing POINTER and 2951/* Return a Lisp_Misc_Save_Value object containing POINTER and
2936 INTEGER. This is used to package C values to call record_unwind_protect. 2952 INTEGER. This is used to package C values to call record_unwind_protect.
2937 The unwind function can get the C values back using XSAVE_VALUE. */ 2953 The unwind function can get the C values back using XSAVE_VALUE. */
@@ -2978,12 +2994,7 @@ free_marker (marker)
2978 Lisp_Object marker; 2994 Lisp_Object marker;
2979{ 2995{
2980 unchain_marker (XMARKER (marker)); 2996 unchain_marker (XMARKER (marker));
2981 2997 free_misc (marker);
2982 XMISC (marker)->u_marker.type = Lisp_Misc_Free;
2983 XMISC (marker)->u_free.chain = marker_free_list;
2984 marker_free_list = XMISC (marker);
2985
2986 total_free_markers++;
2987} 2998}
2988 2999
2989 3000