summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Eggert <eggert@cs.ucla.edu>2017-12-03 18:17:00 -0800
committerPaul Eggert <eggert@cs.ucla.edu>2017-12-03 18:18:02 -0800
commita597969f1360b8c28fd4467018792662b698e03a (patch)
treed05f411481b000a7773d1351eebd641a878aca5f
parentc54718e0bb390b35d86e8cab7ae1a7d1da9c047c (diff)
downloademacs-a597969f1360b8c28fd4467018792662b698e03a.tar.gz
allocate_vectorlike minor cleanup
* src/alloc.c (allocate_vectorlike): Move a bit of code out of the critical section. Although this doesn’t really help performance, it cleans up the code a bit and should make it easier to add pointer bounds checking.
-rw-r--r--src/alloc.c15
1 files changed, 7 insertions, 8 deletions
diff --git a/src/alloc.c b/src/alloc.c
index 49c99501f11..4f3928a4824 100644
--- a/src/alloc.c
+++ b/src/alloc.c
@@ -3317,15 +3317,14 @@ sweep_vectors (void)
static struct Lisp_Vector *
allocate_vectorlike (ptrdiff_t len)
{
- struct Lisp_Vector *p;
-
- MALLOC_BLOCK_INPUT;
-
if (len == 0)
- p = XVECTOR (zero_vector);
+ return XVECTOR (zero_vector);
else
{
size_t nbytes = header_size + len * word_size;
+ struct Lisp_Vector *p;
+
+ MALLOC_BLOCK_INPUT;
#ifdef DOUG_LEA_MALLOC
if (!mmap_lisp_allowed_p ())
@@ -3355,11 +3354,11 @@ allocate_vectorlike (ptrdiff_t len)
consing_since_gc += nbytes;
vector_cells_consed += len;
- }
- MALLOC_UNBLOCK_INPUT;
+ MALLOC_UNBLOCK_INPUT;
- return p;
+ return p;
+ }
}