diff options
| author | Dmitry Antipov | 2014-09-29 10:44:31 +0400 |
|---|---|---|
| committer | Dmitry Antipov | 2014-09-29 10:44:31 +0400 |
| commit | 71a72686e3e81253f2bc0ad74568aafdbd86879c (patch) | |
| tree | e2f2d44e9a01c782e71e8de88e3b345733c86fc7 /src/chartab.c | |
| parent | c3301e3c7f146a3aa017fa24f6ed240d6ecbafb4 (diff) | |
| download | emacs-71a72686e3e81253f2bc0ad74568aafdbd86879c.tar.gz emacs-71a72686e3e81253f2bc0ad74568aafdbd86879c.zip | |
Keep stack-allocated Lisp objects fast rather than versatile.
* configure.ac (HAVE_STATEMENT_EXPRESSIONS): Remove.
For USE_STACK_LISP_OBJECTS, we always assume __GNUC__.
* lisp.h (union Aligned_Cons) [!GCALIGNED]: Define as such.
(SCOPED_CONS_INITIALIZER): New macro.
(scoped_cons) [USE_STACK_LISP_OBJECTS]: Use it.
(USE_LOCAL_ALLOCA): Remove.
(local_cons, local_list1, local_list2, local_list3, local_list4):
Remove. Stack overflow checking makes them too slow.
(make_local_vector): Likewise. Also we just don't have enough
users for it.
(enum LISP_STRING_OVERHEAD): Remove.
(local_string_init, local_vector_init): Remove prototypes.
(make_local_string, build_local_string): Redesign to target short
compile-time string constants, fall back to regular string allocation
where appropriate.
(lisp_string_size): New function.
(verify_ascii) [ENABLE_CHECKING]: Add prototype.
* alloc.c (local_string_init, local_vector_init): Remove.
(verify_ascii) [ENABLE_CHECKING]: New function.
* buffer.c, charset.c, chartab.c, data.c, editfns.c, emacs.c, fileio.c:
* fns.c, font.c, fontset.c, frame.c, keyboard.c, keymap.c, lread.c:
* menu.c, minibuf.c, process.c, textprop.c, xdisp.c, xfns.c, xfont.c:
* xselect.c, xterm.c: All related users changed.
Diffstat (limited to 'src/chartab.c')
| -rw-r--r-- | src/chartab.c | 4 |
1 files changed, 1 insertions, 3 deletions
diff --git a/src/chartab.c b/src/chartab.c index d25169b7a5e..4e4219d8ae3 100644 --- a/src/chartab.c +++ b/src/chartab.c | |||
| @@ -1249,7 +1249,6 @@ uniprop_encode_value_run_length (Lisp_Object table, Lisp_Object value) | |||
| 1249 | static Lisp_Object | 1249 | static Lisp_Object |
| 1250 | uniprop_encode_value_numeric (Lisp_Object table, Lisp_Object value) | 1250 | uniprop_encode_value_numeric (Lisp_Object table, Lisp_Object value) |
| 1251 | { | 1251 | { |
| 1252 | USE_LOCAL_ALLOCA; | ||
| 1253 | Lisp_Object *value_table = XVECTOR (XCHAR_TABLE (table)->extras[4])->contents; | 1252 | Lisp_Object *value_table = XVECTOR (XCHAR_TABLE (table)->extras[4])->contents; |
| 1254 | int i, size = ASIZE (XCHAR_TABLE (table)->extras[4]); | 1253 | int i, size = ASIZE (XCHAR_TABLE (table)->extras[4]); |
| 1255 | 1254 | ||
| @@ -1260,7 +1259,7 @@ uniprop_encode_value_numeric (Lisp_Object table, Lisp_Object value) | |||
| 1260 | value = make_number (i); | 1259 | value = make_number (i); |
| 1261 | if (i == size) | 1260 | if (i == size) |
| 1262 | set_char_table_extras (table, 4, Fvconcat (2, ((Lisp_Object []) { | 1261 | set_char_table_extras (table, 4, Fvconcat (2, ((Lisp_Object []) { |
| 1263 | XCHAR_TABLE (table)->extras[4], make_local_vector (1, value) }))); | 1262 | XCHAR_TABLE (table)->extras[4], Fmake_vector (make_number (1), value) }))); |
| 1264 | return make_number (i); | 1263 | return make_number (i); |
| 1265 | } | 1264 | } |
| 1266 | 1265 | ||
| @@ -1293,7 +1292,6 @@ uniprop_get_encoder (Lisp_Object table) | |||
| 1293 | Lisp_Object | 1292 | Lisp_Object |
| 1294 | uniprop_table (Lisp_Object prop) | 1293 | uniprop_table (Lisp_Object prop) |
| 1295 | { | 1294 | { |
| 1296 | USE_LOCAL_ALLOCA; | ||
| 1297 | Lisp_Object val, table, result; | 1295 | Lisp_Object val, table, result; |
| 1298 | 1296 | ||
| 1299 | val = Fassq (prop, Vchar_code_property_alist); | 1297 | val = Fassq (prop, Vchar_code_property_alist); |