comparison src/alloc.c @ 83163:8e4ea1e2c254

Merged in changes from CVS trunk. Patches applied: * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-420 Tweak permissions * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-421 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-422 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-423 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-424 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-425 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-426 Update from CVS git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-203
author Karoly Lorentey <lorentey@elte.hu>
date Mon, 28 Jun 2004 16:04:52 +0000
parents dbcd0af66869 a446552d2240
children a79c4db19c4f
comparison
equal deleted inserted replaced
83162:dbcd0af66869 83163:8e4ea1e2c254
589 register struct Lisp_Save_Value *p = XSAVE_VALUE (arg); 589 register struct Lisp_Save_Value *p = XSAVE_VALUE (arg);
590 590
591 p->dogc = 0; 591 p->dogc = 0;
592 xfree (p->pointer); 592 xfree (p->pointer);
593 p->pointer = 0; 593 p->pointer = 0;
594 free_misc (arg);
594 return Qnil; 595 return Qnil;
595 } 596 }
596 597
597 598
598 /* Like malloc but used for allocating Lisp data. NBYTES is the 599 /* Like malloc but used for allocating Lisp data. NBYTES is the
2920 MEM_TYPE_MISC); 2921 MEM_TYPE_MISC);
2921 new->next = marker_block; 2922 new->next = marker_block;
2922 marker_block = new; 2923 marker_block = new;
2923 marker_block_index = 0; 2924 marker_block_index = 0;
2924 n_marker_blocks++; 2925 n_marker_blocks++;
2926 total_free_markers += MARKER_BLOCK_SIZE;
2925 } 2927 }
2926 XSETMISC (val, &marker_block->markers[marker_block_index]); 2928 XSETMISC (val, &marker_block->markers[marker_block_index]);
2927 marker_block_index++; 2929 marker_block_index++;
2928 } 2930 }
2929 2931
2932 --total_free_markers;
2930 consing_since_gc += sizeof (union Lisp_Misc); 2933 consing_since_gc += sizeof (union Lisp_Misc);
2931 misc_objects_consed++; 2934 misc_objects_consed++;
2932 XMARKER (val)->gcmarkbit = 0; 2935 XMARKER (val)->gcmarkbit = 0;
2933 return val; 2936 return val;
2937 }
2938
2939 /* Free a Lisp_Misc object */
2940
2941 void
2942 free_misc (misc)
2943 Lisp_Object misc;
2944 {
2945 XMISC (misc)->u_marker.type = Lisp_Misc_Free;
2946 XMISC (misc)->u_free.chain = marker_free_list;
2947 marker_free_list = XMISC (misc);
2948
2949 total_free_markers++;
2934 } 2950 }
2935 2951
2936 /* Return a Lisp_Misc_Save_Value object containing POINTER and 2952 /* Return a Lisp_Misc_Save_Value object containing POINTER and
2937 INTEGER. This is used to package C values to call record_unwind_protect. 2953 INTEGER. This is used to package C values to call record_unwind_protect.
2938 The unwind function can get the C values back using XSAVE_VALUE. */ 2954 The unwind function can get the C values back using XSAVE_VALUE. */
2977 void 2993 void
2978 free_marker (marker) 2994 free_marker (marker)
2979 Lisp_Object marker; 2995 Lisp_Object marker;
2980 { 2996 {
2981 unchain_marker (XMARKER (marker)); 2997 unchain_marker (XMARKER (marker));
2982 2998 free_misc (marker);
2983 XMISC (marker)->u_marker.type = Lisp_Misc_Free;
2984 XMISC (marker)->u_free.chain = marker_free_list;
2985 marker_free_list = XMISC (marker);
2986
2987 total_free_markers++;
2988 } 2999 }
2989 3000
2990 3001
2991 /* Return a newly created vector or string with specified arguments as 3002 /* Return a newly created vector or string with specified arguments as
2992 elements. If all the arguments are characters that can fit 3003 elements. If all the arguments are characters that can fit