diff options
author | Paul Eggert <eggert@cs.ucla.edu> | 2014-09-09 23:38:38 -0700 |
---|---|---|
committer | Paul Eggert <eggert@cs.ucla.edu> | 2014-09-09 23:38:38 -0700 |
commit | 11e28ab08d44c1fc40e3e4dc728c14c521b3879d (patch) | |
tree | fd5f541d44d9d3d6383f2064c9e45c684b73d6cf /lisp/emacs-lisp/autoload.el | |
parent | c98d0ea46197545b899b463c1ba9ff2fea8e8c6e (diff) | |
download | emacs-11e28ab08d44c1fc40e3e4dc728c14c521b3879d.tar.gz emacs-11e28ab08d44c1fc40e3e4dc728c14c521b3879d.tar.bz2 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 'lisp/emacs-lisp/autoload.el')
0 files changed, 0 insertions, 0 deletions