diff options
| author | Karl Heuer | 1994-11-16 04:48:37 +0000 |
|---|---|---|
| committer | Karl Heuer | 1994-11-16 04:48:37 +0000 |
| commit | 1825c68d0c522e82968bccb90d34f3f525946ba2 (patch) | |
| tree | 21a7592613c4cc1886ceb40427a9fdadac93da69 /src/alloc.c | |
| parent | b8e0549dc41377a70d2467571dfcbccbecd412f7 (diff) | |
| download | emacs-1825c68d0c522e82968bccb90d34f3f525946ba2.tar.gz emacs-1825c68d0c522e82968bccb90d34f3f525946ba2.zip | |
(Fmake_vector): Call allocate_vectorlike.
(allocate_vectorlike): New function, extracted from Fmake_vector.
Diffstat (limited to 'src/alloc.c')
| -rw-r--r-- | src/alloc.c | 33 |
1 files changed, 22 insertions, 11 deletions
diff --git a/src/alloc.c b/src/alloc.c index 62f37d61bfa..e8c137bb4ed 100644 --- a/src/alloc.c +++ b/src/alloc.c | |||
| @@ -583,32 +583,43 @@ DEFUN ("make-list", Fmake_list, Smake_list, 2, 2, 0, | |||
| 583 | 583 | ||
| 584 | struct Lisp_Vector *all_vectors; | 584 | struct Lisp_Vector *all_vectors; |
| 585 | 585 | ||
| 586 | struct Lisp_Vector * | ||
| 587 | allocate_vectorlike (len) | ||
| 588 | EMACS_INT len; | ||
| 589 | { | ||
| 590 | struct Lisp_Vector *p; | ||
| 591 | |||
| 592 | p = (struct Lisp_Vector *)xmalloc (sizeof (struct Lisp_Vector) | ||
| 593 | + (len - 1) * sizeof (Lisp_Object)); | ||
| 594 | VALIDATE_LISP_STORAGE (p, 0); | ||
| 595 | consing_since_gc += (sizeof (struct Lisp_Vector) | ||
| 596 | + (len - 1) * sizeof (Lisp_Object)); | ||
| 597 | |||
| 598 | p->next = all_vectors; | ||
| 599 | all_vectors = p; | ||
| 600 | return p; | ||
| 601 | } | ||
| 602 | |||
| 586 | DEFUN ("make-vector", Fmake_vector, Smake_vector, 2, 2, 0, | 603 | DEFUN ("make-vector", Fmake_vector, Smake_vector, 2, 2, 0, |
| 587 | "Return a newly created vector of length LENGTH, with each element being INIT.\n\ | 604 | "Return a newly created vector of length LENGTH, with each element being INIT.\n\ |
| 588 | See also the function `vector'.") | 605 | See also the function `vector'.") |
| 589 | (length, init) | 606 | (length, init) |
| 590 | register Lisp_Object length, init; | 607 | register Lisp_Object length, init; |
| 591 | { | 608 | { |
| 592 | register int sizei, index; | 609 | Lisp_Object vector; |
| 593 | register Lisp_Object vector; | 610 | register EMACS_INT sizei; |
| 611 | register int index; | ||
| 594 | register struct Lisp_Vector *p; | 612 | register struct Lisp_Vector *p; |
| 595 | 613 | ||
| 596 | CHECK_NATNUM (length, 0); | 614 | CHECK_NATNUM (length, 0); |
| 597 | sizei = XFASTINT (length); | 615 | sizei = XFASTINT (length); |
| 598 | 616 | ||
| 599 | p = (struct Lisp_Vector *) xmalloc (sizeof (struct Lisp_Vector) + (sizei - 1) * sizeof (Lisp_Object)); | 617 | p = allocate_vectorlike (sizei); |
| 600 | VALIDATE_LISP_STORAGE (p, 0); | ||
| 601 | |||
| 602 | XSETVECTOR (vector, p); | ||
| 603 | consing_since_gc += sizeof (struct Lisp_Vector) + (sizei - 1) * sizeof (Lisp_Object); | ||
| 604 | |||
| 605 | p->size = sizei; | 618 | p->size = sizei; |
| 606 | p->next = all_vectors; | ||
| 607 | all_vectors = p; | ||
| 608 | |||
| 609 | for (index = 0; index < sizei; index++) | 619 | for (index = 0; index < sizei; index++) |
| 610 | p->contents[index] = init; | 620 | p->contents[index] = init; |
| 611 | 621 | ||
| 622 | XSETVECTOR (vector, p); | ||
| 612 | return vector; | 623 | return vector; |
| 613 | } | 624 | } |
| 614 | 625 | ||