aboutsummaryrefslogtreecommitdiffstats
path: root/src/ChangeLog
diff options
context:
space:
mode:
authorDmitry Antipov2012-06-08 12:44:30 +0400
committerDmitry Antipov2012-06-08 12:44:30 +0400
commitf3372c8789c843a00912e7fc9793ded4beb9a35a (patch)
tree72217e83c99d83ce8b56884b0a21276669e1699b /src/ChangeLog
parentd52ba5afda376fedc679ac6d4e003867d70866dd (diff)
downloademacs-f3372c8789c843a00912e7fc9793ded4beb9a35a.tar.gz
emacs-f3372c8789c843a00912e7fc9793ded4beb9a35a.zip
Block-based vector allocation of small vectors.
* src/lisp.h (struct vectorlike_header): New field `nbytes', adjust comment accordingly. * src/alloc.c (enum mem_type): New type `MEM_TYPE_VECTOR_BLOCK' to denote vector blocks. Adjust users (live_vector_p, mark_maybe_pointer, valid_lisp_object_p) accordingly. (COMMON_MULTIPLE): Move outside #if USE_LSB_TAG. (VECTOR_BLOCK_SIZE, vroundup, VECTOR_BLOCK_BYTES), (VBLOCK_BYTES_MIN, VBLOCK_BYTES_MAX, VECTOR_MAX_FREE_LIST_INDEX), (VECTOR_FREE_LIST_FLAG, ADVANCE, VINDEX, SETUP_ON_FREE_LIST), (VECTOR_SIZE, VECTOR_IN_BLOCK): New macros. (roundup_size): New constant. (struct vector_block): New data type. (vector_blocks, vector_free_lists, zero_vector): New variables. (all_vectors): Renamed to `large_vectors'. (allocate_vector_from_block, init_vectors, allocate_vector_from_block) (sweep_vectors): New functions. (allocate_vectorlike): Return `zero_vector' as the only vector of 0 items. Allocate new vector from block if vector size is less than or equal to VBLOCK_BYTES_MAX. (Fgarbage_collect): Move all vector sweeping code to sweep_vectors. (init_alloc_once): Add call to init_vectors. * doc/lispref/internals.text (Garbage Collection): Document new vector management code and vectorlike_header structure.
Diffstat (limited to 'src/ChangeLog')
-rw-r--r--src/ChangeLog25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index e16da43761f..bebb36b50a8 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,28 @@
12012-06-08 Dmitry Antipov <dmantipov@yandex.ru>
2
3 Block-based vector allocation of small vectors.
4 * lisp.h (struct vectorlike_header): New field `nbytes',
5 adjust comment accordingly.
6 * alloc.c (enum mem_type): New type `MEM_TYPE_VECTOR_BLOCK'
7 to denote vector blocks. Adjust users (live_vector_p,
8 mark_maybe_pointer, valid_lisp_object_p) accordingly.
9 (COMMON_MULTIPLE): Move outside #if USE_LSB_TAG.
10 (VECTOR_BLOCK_SIZE, vroundup, VECTOR_BLOCK_BYTES),
11 (VBLOCK_BYTES_MIN, VBLOCK_BYTES_MAX, VECTOR_MAX_FREE_LIST_INDEX),
12 (VECTOR_FREE_LIST_FLAG, ADVANCE, VINDEX, SETUP_ON_FREE_LIST),
13 (VECTOR_SIZE, VECTOR_IN_BLOCK): New macros.
14 (roundup_size): New constant.
15 (struct vector_block): New data type.
16 (vector_blocks, vector_free_lists, zero_vector): New variables.
17 (all_vectors): Renamed to `large_vectors'.
18 (allocate_vector_from_block, init_vectors, allocate_vector_from_block)
19 (sweep_vectors): New functions.
20 (allocate_vectorlike): Return `zero_vector' as the only vector of
21 0 items. Allocate new vector from block if vector size is less than
22 or equal to VBLOCK_BYTES_MAX.
23 (Fgarbage_collect): Move all vector sweeping code to sweep_vectors.
24 (init_alloc_once): Add call to init_vectors.
25
12012-06-08 Stefan Monnier <monnier@iro.umontreal.ca> 262012-06-08 Stefan Monnier <monnier@iro.umontreal.ca>
2 27
3 * eval.c (Fmacroexpand): Stop if the macro returns the same form. 28 * eval.c (Fmacroexpand): Stop if the macro returns the same form.