diff options
| author | Dmitry Antipov | 2012-07-23 15:15:43 +0400 |
|---|---|---|
| committer | Dmitry Antipov | 2012-07-23 15:15:43 +0400 |
| commit | d7a7fda3cc130edb8bc10af96d322d263afbb44a (patch) | |
| tree | c7e8012e1b8ab313038ccd2dab1a2b39fa2c4bd6 /src/alloc.c | |
| parent | 5df1607869c5acff34382b5accf3332b1e72bc2a (diff) | |
| download | emacs-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.c | 31 |
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 | ||
| 3565 | static union Lisp_Misc *marker_free_list; | 3565 | static 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 | ||
| 3569 | Lisp_Object | 3569 | static Lisp_Object |
| 3570 | allocate_misc (void) | 3570 | allocate_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 | |||
| 3639 | Lisp_Object | ||
| 3640 | build_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 | |||
| 3637 | DEFUN ("make-marker", Fmake_marker, Smake_marker, 0, 0, 0, | 3652 | DEFUN ("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; |