aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/alloc.c12
-rw-r--r--src/buffer.c4
-rw-r--r--src/data.c33
-rw-r--r--src/eval.c2
-rw-r--r--src/lisp.h1
5 files changed, 31 insertions, 21 deletions
diff --git a/src/alloc.c b/src/alloc.c
index 16257469aa6..2ffd2415447 100644
--- a/src/alloc.c
+++ b/src/alloc.c
@@ -3960,7 +3960,7 @@ Its value is void, and its function definition and property list are nil. */)
3960 if (symbol_free_list) 3960 if (symbol_free_list)
3961 { 3961 {
3962 ASAN_UNPOISON_SYMBOL (symbol_free_list); 3962 ASAN_UNPOISON_SYMBOL (symbol_free_list);
3963 val = make_lisp_symbol (symbol_free_list); 3963 XSETSYMBOL (val, symbol_free_list);
3964 symbol_free_list = symbol_free_list->u.s.next; 3964 symbol_free_list = symbol_free_list->u.s.next;
3965 } 3965 }
3966 else 3966 else
@@ -3976,7 +3976,7 @@ Its value is void, and its function definition and property list are nil. */)
3976 } 3976 }
3977 3977
3978 ASAN_UNPOISON_SYMBOL (&symbol_block->symbols[symbol_block_index]); 3978 ASAN_UNPOISON_SYMBOL (&symbol_block->symbols[symbol_block_index]);
3979 val = make_lisp_symbol (&symbol_block->symbols[symbol_block_index]); 3979 XSETSYMBOL (val, &symbol_block->symbols[symbol_block_index]);
3980 symbol_block_index++; 3980 symbol_block_index++;
3981 } 3981 }
3982 3982
@@ -7398,8 +7398,12 @@ process_mark_stack (ptrdiff_t base_sp)
7398 mark_stack_push_value (SYMBOL_VAL (ptr)); 7398 mark_stack_push_value (SYMBOL_VAL (ptr));
7399 break; 7399 break;
7400 case SYMBOL_VARALIAS: 7400 case SYMBOL_VARALIAS:
7401 mark_stack_push_value (make_lisp_symbol (SYMBOL_ALIAS (ptr))); 7401 {
7402 break; 7402 Lisp_Object tem;
7403 XSETSYMBOL (tem, SYMBOL_ALIAS (ptr));
7404 mark_stack_push_value (tem);
7405 break;
7406 }
7403 case SYMBOL_LOCALIZED: 7407 case SYMBOL_LOCALIZED:
7404 { 7408 {
7405 struct Lisp_Buffer_Local_Value *blv = SYMBOL_BLV (ptr); 7409 struct Lisp_Buffer_Local_Value *blv = SYMBOL_BLV (ptr);
diff --git a/src/buffer.c b/src/buffer.c
index 9f55a8813fa..43a9249528c 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -1340,7 +1340,7 @@ buffer_local_value (Lisp_Object variable, Lisp_Object buffer)
1340 case SYMBOL_LOCALIZED: 1340 case SYMBOL_LOCALIZED:
1341 { /* Look in local_var_alist. */ 1341 { /* Look in local_var_alist. */
1342 struct Lisp_Buffer_Local_Value *blv = SYMBOL_BLV (sym); 1342 struct Lisp_Buffer_Local_Value *blv = SYMBOL_BLV (sym);
1343 variable = make_lisp_symbol (sym); /* Update In case of aliasing. */ 1343 XSETSYMBOL (variable, sym); /* Update In case of aliasing. */
1344 result = assq_no_quit (variable, BVAR (buf, local_var_alist)); 1344 result = assq_no_quit (variable, BVAR (buf, local_var_alist));
1345 if (!NILP (result)) 1345 if (!NILP (result))
1346 { 1346 {
@@ -4985,7 +4985,7 @@ defvar_per_buffer (struct Lisp_Buffer_Objfwd *bo_fwd, const char *namestring,
4985 sym->u.s.declared_special = true; 4985 sym->u.s.declared_special = true;
4986 sym->u.s.redirect = SYMBOL_FORWARDED; 4986 sym->u.s.redirect = SYMBOL_FORWARDED;
4987 SET_SYMBOL_FWD (sym, bo_fwd); 4987 SET_SYMBOL_FWD (sym, bo_fwd);
4988 PER_BUFFER_SYMBOL (offset) = make_lisp_symbol (sym); 4988 XSETSYMBOL (PER_BUFFER_SYMBOL (offset), sym);
4989 4989
4990 if (PER_BUFFER_IDX (offset) == 0) 4990 if (PER_BUFFER_IDX (offset) == 0)
4991 /* Did a DEFVAR_PER_BUFFER without initializing the corresponding 4991 /* Did a DEFVAR_PER_BUFFER without initializing the corresponding
diff --git a/src/data.c b/src/data.c
index c87b5317618..df08eaf8102 100644
--- a/src/data.c
+++ b/src/data.c
@@ -1256,7 +1256,7 @@ If OBJECT is not a symbol, just return it. */)
1256 struct Lisp_Symbol *sym = XSYMBOL (object); 1256 struct Lisp_Symbol *sym = XSYMBOL (object);
1257 while (sym->u.s.redirect == SYMBOL_VARALIAS) 1257 while (sym->u.s.redirect == SYMBOL_VARALIAS)
1258 sym = SYMBOL_ALIAS (sym); 1258 sym = SYMBOL_ALIAS (sym);
1259 object = make_lisp_symbol (sym); 1259 XSETSYMBOL (object, sym);
1260 } 1260 }
1261 return object; 1261 return object;
1262} 1262}
@@ -1506,9 +1506,12 @@ swap_in_symval_forwarding (struct Lisp_Symbol *symbol, struct Lisp_Buffer_Local_
1506 if (blv->fwd.fwdptr) 1506 if (blv->fwd.fwdptr)
1507 set_blv_value (blv, do_symval_forwarding (blv->fwd)); 1507 set_blv_value (blv, do_symval_forwarding (blv->fwd));
1508 /* Choose the new binding. */ 1508 /* Choose the new binding. */
1509 tem1 = assq_no_quit (make_lisp_symbol (symbol), 1509 {
1510 BVAR (current_buffer, local_var_alist)); 1510 Lisp_Object var;
1511 set_blv_where (blv, Fcurrent_buffer ()); 1511 XSETSYMBOL (var, symbol);
1512 tem1 = assq_no_quit (var, BVAR (current_buffer, local_var_alist));
1513 set_blv_where (blv, Fcurrent_buffer ());
1514 }
1512 if (!(blv->found = !NILP (tem1))) 1515 if (!(blv->found = !NILP (tem1)))
1513 tem1 = blv->defcell; 1516 tem1 = blv->defcell;
1514 1517
@@ -1652,8 +1655,7 @@ set_internal (Lisp_Object symbol, Lisp_Object newval, Lisp_Object where,
1652 set_blv_value (blv, do_symval_forwarding (blv->fwd)); 1655 set_blv_value (blv, do_symval_forwarding (blv->fwd));
1653 1656
1654 /* Find the new binding. */ 1657 /* Find the new binding. */
1655 /* May have changed via aliasing. */ 1658 XSETSYMBOL (symbol, sym); /* May have changed via aliasing. */
1656 symbol = make_lisp_symbol (sym);
1657 Lisp_Object tem1 1659 Lisp_Object tem1
1658 = assq_no_quit (symbol, 1660 = assq_no_quit (symbol,
1659 BVAR (XBUFFER (where), local_var_alist)); 1661 BVAR (XBUFFER (where), local_var_alist));
@@ -2057,10 +2059,13 @@ make_blv (struct Lisp_Symbol *sym, bool forwarded,
2057 union Lisp_Val_Fwd valcontents) 2059 union Lisp_Val_Fwd valcontents)
2058{ 2060{
2059 struct Lisp_Buffer_Local_Value *blv = xmalloc (sizeof *blv); 2061 struct Lisp_Buffer_Local_Value *blv = xmalloc (sizeof *blv);
2060 Lisp_Object tem = Fcons (make_lisp_symbol (sym), 2062 Lisp_Object symbol;
2061 forwarded 2063 Lisp_Object tem;
2062 ? do_symval_forwarding (valcontents.fwd) 2064
2063 : valcontents.value); 2065 XSETSYMBOL (symbol, sym);
2066 tem = Fcons (symbol, (forwarded
2067 ? do_symval_forwarding (valcontents.fwd)
2068 : valcontents.value));
2064 2069
2065 /* Buffer_Local_Values cannot have as realval a buffer-local 2070 /* Buffer_Local_Values cannot have as realval a buffer-local
2066 or keyboard-local forwarding. */ 2071 or keyboard-local forwarding. */
@@ -2216,7 +2221,7 @@ Instead, use `add-hook' and specify t for the LOCAL argument. */)
2216 } 2221 }
2217 2222
2218 /* Make sure this buffer has its own value of symbol. */ 2223 /* Make sure this buffer has its own value of symbol. */
2219 variable = make_lisp_symbol (sym); /* Update in case of aliasing. */ 2224 XSETSYMBOL (variable, sym); /* Update in case of aliasing. */
2220 tem = assq_no_quit (variable, BVAR (current_buffer, local_var_alist)); 2225 tem = assq_no_quit (variable, BVAR (current_buffer, local_var_alist));
2221 if (NILP (tem)) 2226 if (NILP (tem))
2222 { 2227 {
@@ -2296,7 +2301,7 @@ From now on the default value will apply in this buffer. Return VARIABLE. */)
2296 notify_variable_watchers (variable, Qnil, Qmakunbound, Fcurrent_buffer ()); 2301 notify_variable_watchers (variable, Qnil, Qmakunbound, Fcurrent_buffer ());
2297 2302
2298 /* Get rid of this buffer's alist element, if any. */ 2303 /* Get rid of this buffer's alist element, if any. */
2299 variable = make_lisp_symbol (sym); /* Propagate variable indirection. */ 2304 XSETSYMBOL (variable, sym); /* Propagate variable indirection. */
2300 tem = assq_no_quit (variable, BVAR (current_buffer, local_var_alist)); 2305 tem = assq_no_quit (variable, BVAR (current_buffer, local_var_alist));
2301 if (!NILP (tem)) 2306 if (!NILP (tem))
2302 bset_local_var_alist 2307 bset_local_var_alist
@@ -2341,7 +2346,7 @@ Also see `buffer-local-boundp'.*/)
2341 Lisp_Object tmp; 2346 Lisp_Object tmp;
2342 struct Lisp_Buffer_Local_Value *blv = SYMBOL_BLV (sym); 2347 struct Lisp_Buffer_Local_Value *blv = SYMBOL_BLV (sym);
2343 XSETBUFFER (tmp, buf); 2348 XSETBUFFER (tmp, buf);
2344 variable = make_lisp_symbol (sym); /* Update in case of aliasing. */ 2349 XSETSYMBOL (variable, sym); /* Update in case of aliasing. */
2345 2350
2346 if (EQ (blv->where, tmp)) /* The binding is already loaded. */ 2351 if (EQ (blv->where, tmp)) /* The binding is already loaded. */
2347 return blv_found (blv) ? Qt : Qnil; 2352 return blv_found (blv) ? Qt : Qnil;
@@ -2391,7 +2396,7 @@ value in BUFFER, or if VARIABLE is automatically buffer-local (see
2391 struct Lisp_Buffer_Local_Value *blv = SYMBOL_BLV (sym); 2396 struct Lisp_Buffer_Local_Value *blv = SYMBOL_BLV (sym);
2392 if (blv->local_if_set) 2397 if (blv->local_if_set)
2393 return Qt; 2398 return Qt;
2394 variable = make_lisp_symbol (sym); /* Update in case of aliasing. */ 2399 XSETSYMBOL (variable, sym); /* Update in case of aliasing. */
2395 return Flocal_variable_p (variable, buffer); 2400 return Flocal_variable_p (variable, buffer);
2396 } 2401 }
2397 case SYMBOL_FORWARDED: 2402 case SYMBOL_FORWARDED:
diff --git a/src/eval.c b/src/eval.c
index 9d3b98eb359..95eb21909d2 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -3475,7 +3475,7 @@ specbind (Lisp_Object symbol, Lisp_Object value)
3475 switch (sym->u.s.redirect) 3475 switch (sym->u.s.redirect)
3476 { 3476 {
3477 case SYMBOL_VARALIAS: 3477 case SYMBOL_VARALIAS:
3478 sym = SYMBOL_ALIAS (sym); symbol = make_lisp_symbol (sym); goto start; 3478 sym = SYMBOL_ALIAS (sym); XSETSYMBOL (symbol, sym); goto start;
3479 case SYMBOL_PLAINVAL: 3479 case SYMBOL_PLAINVAL:
3480 /* The most common case is that of a non-constant symbol with a 3480 /* The most common case is that of a non-constant symbol with a
3481 trivial value. Make that as fast as we can. */ 3481 trivial value. Make that as fast as we can. */
diff --git a/src/lisp.h b/src/lisp.h
index 4fc44745211..f353e4956eb 100644
--- a/src/lisp.h
+++ b/src/lisp.h
@@ -1380,6 +1380,7 @@ make_lisp_ptr (void *ptr, enum Lisp_Type type)
1380#define XSETCONS(a, b) ((a) = make_lisp_ptr (b, Lisp_Cons)) 1380#define XSETCONS(a, b) ((a) = make_lisp_ptr (b, Lisp_Cons))
1381#define XSETVECTOR(a, b) ((a) = make_lisp_ptr (b, Lisp_Vectorlike)) 1381#define XSETVECTOR(a, b) ((a) = make_lisp_ptr (b, Lisp_Vectorlike))
1382#define XSETSTRING(a, b) ((a) = make_lisp_ptr (b, Lisp_String)) 1382#define XSETSTRING(a, b) ((a) = make_lisp_ptr (b, Lisp_String))
1383#define XSETSYMBOL(a, b) ((a) = make_lisp_symbol (b))
1383#define XSETFLOAT(a, b) ((a) = make_lisp_ptr (b, Lisp_Float)) 1384#define XSETFLOAT(a, b) ((a) = make_lisp_ptr (b, Lisp_Float))
1384 1385
1385/* Return a Lisp_Object value that does not correspond to any object. 1386/* Return a Lisp_Object value that does not correspond to any object.