aboutsummaryrefslogtreecommitdiffstats
path: root/src/alloc.c
diff options
context:
space:
mode:
authorDmitry Antipov2012-07-23 15:15:43 +0400
committerDmitry Antipov2012-07-23 15:15:43 +0400
commitd7a7fda3cc130edb8bc10af96d322d263afbb44a (patch)
treec7e8012e1b8ab313038ccd2dab1a2b39fa2c4bd6 /src/alloc.c
parent5df1607869c5acff34382b5accf3332b1e72bc2a (diff)
downloademacs-d7a7fda3cc130edb8bc10af96d322d263afbb44a.tar.gz
emacs-d7a7fda3cc130edb8bc10af96d322d263afbb44a.zip
Cleanup miscellaneous objects allocation and initialization.
* alloc.c (allocate_misc): Change to static. Add argument to specify the subtype. Adjust comment and users. (build_overlay): New function. * buffer.c (copy_overlays, Fmake_overlay): Use it. * lisp.h (struct Lisp_Overlay): Remove obsolete comment. (allocate_misc): Remove prototype. (build_overlay): Add prototype.
Diffstat (limited to 'src/alloc.c')
-rw-r--r--src/alloc.c31
1 files changed, 22 insertions, 9 deletions
diff --git a/src/alloc.c b/src/alloc.c
index 9f3c2a2ed4b..d9c56b5c7c8 100644
--- a/src/alloc.c
+++ b/src/alloc.c
@@ -3564,10 +3564,10 @@ static int marker_block_index = MARKER_BLOCK_SIZE;
3564 3564
3565static union Lisp_Misc *marker_free_list; 3565static union Lisp_Misc *marker_free_list;
3566 3566
3567/* Return a newly allocated Lisp_Misc object, with no substructure. */ 3567/* Return a newly allocated Lisp_Misc object of specified TYPE. */
3568 3568
3569Lisp_Object 3569static Lisp_Object
3570allocate_misc (void) 3570allocate_misc (enum Lisp_Misc_Type type)
3571{ 3571{
3572 Lisp_Object val; 3572 Lisp_Object val;
3573 3573
@@ -3599,6 +3599,7 @@ allocate_misc (void)
3599 --total_free_markers; 3599 --total_free_markers;
3600 consing_since_gc += sizeof (union Lisp_Misc); 3600 consing_since_gc += sizeof (union Lisp_Misc);
3601 misc_objects_consed++; 3601 misc_objects_consed++;
3602 XMISCTYPE (val) = type;
3602 XMISCANY (val)->gcmarkbit = 0; 3603 XMISCANY (val)->gcmarkbit = 0;
3603 return val; 3604 return val;
3604} 3605}
@@ -3625,8 +3626,7 @@ make_save_value (void *pointer, ptrdiff_t integer)
3625 register Lisp_Object val; 3626 register Lisp_Object val;
3626 register struct Lisp_Save_Value *p; 3627 register struct Lisp_Save_Value *p;
3627 3628
3628 val = allocate_misc (); 3629 val = allocate_misc (Lisp_Misc_Save_Value);
3629 XMISCTYPE (val) = Lisp_Misc_Save_Value;
3630 p = XSAVE_VALUE (val); 3630 p = XSAVE_VALUE (val);
3631 p->pointer = pointer; 3631 p->pointer = pointer;
3632 p->integer = integer; 3632 p->integer = integer;
@@ -3634,6 +3634,21 @@ make_save_value (void *pointer, ptrdiff_t integer)
3634 return val; 3634 return val;
3635} 3635}
3636 3636
3637/* Return a Lisp_Misc_Overlay object with specified START, END and PLIST. */
3638
3639Lisp_Object
3640build_overlay (Lisp_Object start, Lisp_Object end, Lisp_Object plist)
3641{
3642 register Lisp_Object overlay;
3643
3644 overlay = allocate_misc (Lisp_Misc_Overlay);
3645 OVERLAY_START (overlay) = start;
3646 OVERLAY_END (overlay) = end;
3647 OVERLAY_PLIST (overlay) = plist;
3648 XOVERLAY (overlay)->next = NULL;
3649 return overlay;
3650}
3651
3637DEFUN ("make-marker", Fmake_marker, Smake_marker, 0, 0, 0, 3652DEFUN ("make-marker", Fmake_marker, Smake_marker, 0, 0, 0,
3638 doc: /* Return a newly allocated marker which does not point at any place. */) 3653 doc: /* Return a newly allocated marker which does not point at any place. */)
3639 (void) 3654 (void)
@@ -3641,8 +3656,7 @@ DEFUN ("make-marker", Fmake_marker, Smake_marker, 0, 0, 0,
3641 register Lisp_Object val; 3656 register Lisp_Object val;
3642 register struct Lisp_Marker *p; 3657 register struct Lisp_Marker *p;
3643 3658
3644 val = allocate_misc (); 3659 val = allocate_misc (Lisp_Misc_Marker);
3645 XMISCTYPE (val) = Lisp_Misc_Marker;
3646 p = XMARKER (val); 3660 p = XMARKER (val);
3647 p->buffer = 0; 3661 p->buffer = 0;
3648 p->bytepos = 0; 3662 p->bytepos = 0;
@@ -3667,8 +3681,7 @@ build_marker (struct buffer *buf, ptrdiff_t charpos, ptrdiff_t bytepos)
3667 /* Every character is at least one byte. */ 3681 /* Every character is at least one byte. */
3668 eassert (charpos <= bytepos); 3682 eassert (charpos <= bytepos);
3669 3683
3670 obj = allocate_misc (); 3684 obj = allocate_misc (Lisp_Misc_Marker);
3671 XMISCTYPE (obj) = Lisp_Misc_Marker;
3672 m = XMARKER (obj); 3685 m = XMARKER (obj);
3673 m->buffer = buf; 3686 m->buffer = buf;
3674 m->charpos = charpos; 3687 m->charpos = charpos;