diff options
| author | Paul Eggert | 2014-09-09 23:38:38 -0700 |
|---|---|---|
| committer | Paul Eggert | 2014-09-09 23:38:38 -0700 |
| commit | 11e28ab08d44c1fc40e3e4dc728c14c521b3879d (patch) | |
| tree | fd5f541d44d9d3d6383f2064c9e45c684b73d6cf /src/ChangeLog | |
| parent | c98d0ea46197545b899b463c1ba9ff2fea8e8c6e (diff) | |
| download | emacs-11e28ab08d44c1fc40e3e4dc728c14c521b3879d.tar.gz emacs-11e28ab08d44c1fc40e3e4dc728c14c521b3879d.zip | |
Improve the experimental local and scoped allocation.
* configure.ac (HAVE_STRUCT_ATTRIBUTE_ALIGNED)
(HAVE_STATEMENT_EXPRESSIONS): New configure-time checks.
* src/alloc.c (local_string_init, local_vector_init):
New functions, defined if USE_LOCAL_ALLOCATORS.
Mostly, these are moved here from lisp.h, as it's not
clear it's worth making them inline.
* src/lisp.h (USE_STACK_LISP_OBJECTS): Default to false.
(GCALIGNED): Depend on HAVE_STRUCT_ATTRIBUTE_ALIGNED and
USE_STACK_LISP_OBJECTS, not on a laundry list.
(local_string_init, local_vector_init): New decls.
(union Aligned_Cons): New type.
(scoped_cons): Use it. Give up on the char trick, as it's a too
much of a maintenance hassle; if someone wants this speedup
they'll just need to convince their compiler to align properly.
Conversely, use the speedup if struct Lisp_Cons happens to
be aligned even without a directive. Better yet, help it along
by using union Aligned_Cons rather than struct Lisp_Cons.
(pointer_valid_for_lisp_object): Remove. This check is not
necessary, since make_lisp_ptr is already doing it. All uses removed.
(local_vector_init, local_string_init): Move to alloc.c.
(build_local_vector): Remove this awkward macro, replacing with ...
(make_local_vector): New macro, which acts more like a function.
Use statement expressions and use __COUNTER__ to avoid macro
capture. Fall back on functions if these features are not supported.
(build_local_string, make_local_string): Likewise.
Diffstat (limited to 'src/ChangeLog')
| -rw-r--r-- | src/ChangeLog | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index b94ac53051a..b98d4eef355 100644 --- a/src/ChangeLog +++ b/src/ChangeLog | |||
| @@ -1,3 +1,30 @@ | |||
| 1 | 2014-09-10 Paul Eggert <eggert@cs.ucla.edu> | ||
| 2 | |||
| 3 | Improve the experimental local and scoped allocation. | ||
| 4 | * alloc.c (local_string_init, local_vector_init): | ||
| 5 | New functions, defined if USE_LOCAL_ALLOCATORS. | ||
| 6 | Mostly, these are moved here from lisp.h, as it's not | ||
| 7 | clear it's worth making them inline. | ||
| 8 | * lisp.h (USE_STACK_LISP_OBJECTS): Default to false. | ||
| 9 | (GCALIGNED): Depend on HAVE_STRUCT_ATTRIBUTE_ALIGNED and | ||
| 10 | USE_STACK_LISP_OBJECTS, not on a laundry list. | ||
| 11 | (local_string_init, local_vector_init): New decls. | ||
| 12 | (union Aligned_Cons): New type. | ||
| 13 | (scoped_cons): Use it. Give up on the char trick, as it's a too | ||
| 14 | much of a maintenance hassle; if someone wants this speedup | ||
| 15 | they'll just need to convince their compiler to align properly. | ||
| 16 | Conversely, use the speedup if struct Lisp_Cons happens to | ||
| 17 | be aligned even without a directive. Better yet, help it along | ||
| 18 | by using union Aligned_Cons rather than struct Lisp_Cons. | ||
| 19 | (pointer_valid_for_lisp_object): Remove. This check is not | ||
| 20 | necessary, since make_lisp_ptr is already doing it. All uses removed. | ||
| 21 | (local_vector_init, local_string_init): Move to alloc.c. | ||
| 22 | (build_local_vector): Remove this awkward macro, replacing with ... | ||
| 23 | (make_local_vector): New macro, which acts more like a function. | ||
| 24 | Use statement expressions and use __COUNTER__ to avoid macro | ||
| 25 | capture. Fall back on functions if these features are not supported. | ||
| 26 | (build_local_string, make_local_string): Likewise. | ||
| 27 | |||
| 1 | 2014-09-09 Dmitry Antipov <dmantipov@yandex.ru> | 28 | 2014-09-09 Dmitry Antipov <dmantipov@yandex.ru> |
| 2 | 29 | ||
| 3 | * xterm.c (x_term_init): Consolidate duplicated code. | 30 | * xterm.c (x_term_init): Consolidate duplicated code. |