aboutsummaryrefslogtreecommitdiffstats
path: root/src/chartab.c
diff options
context:
space:
mode:
authorDmitry Antipov2014-09-29 10:44:31 +0400
committerDmitry Antipov2014-09-29 10:44:31 +0400
commit71a72686e3e81253f2bc0ad74568aafdbd86879c (patch)
treee2f2d44e9a01c782e71e8de88e3b345733c86fc7 /src/chartab.c
parentc3301e3c7f146a3aa017fa24f6ed240d6ecbafb4 (diff)
downloademacs-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.c4
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)
1249static Lisp_Object 1249static Lisp_Object
1250uniprop_encode_value_numeric (Lisp_Object table, Lisp_Object value) 1250uniprop_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)
1293Lisp_Object 1292Lisp_Object
1294uniprop_table (Lisp_Object prop) 1293uniprop_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);