[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#48264: [PATCH v3 02/15] Take offset not idx in PER_BUFFER_VALUE_P
From: |
Spencer Baugh |
Subject: |
bug#48264: [PATCH v3 02/15] Take offset not idx in PER_BUFFER_VALUE_P |
Date: |
Thu, 6 May 2021 17:33:33 -0400 |
This improves clarity and allows us to more easily change how
PER_BUFFER_VALUE_P works.
* src/buffer.h (PER_BUFFER_VALUE_P): Move to be in scope of
PER_BUFFER_IDX. Take offset instead of idx, and perform the common
"idx == -1" check internally.
* src/data.c (store_symval_forwarding, set_internal)
(set_default_internal, Flocal_variable_p):
* src/buffer.c (buffer_local_variables_1): Pass offset not idx to
PER_BUFFER_VALUE_P, and remove idx == -1 checks.
---
src/buffer.c | 3 +--
src/buffer.h | 21 +++++++++++----------
src/data.c | 11 +++++------
3 files changed, 17 insertions(+), 18 deletions(-)
diff --git a/src/buffer.c b/src/buffer.c
index 8b3e15bc81..c395c6ec98 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -1319,8 +1319,7 @@ buffer_lisp_local_variables (struct buffer *buf, bool
clone)
static Lisp_Object
buffer_local_variables_1 (struct buffer *buf, int offset, Lisp_Object sym)
{
- int idx = PER_BUFFER_IDX (offset);
- if ((idx == -1 || PER_BUFFER_VALUE_P (buf, idx))
+ if (PER_BUFFER_VALUE_P (buf, offset)
&& SYMBOLP (PER_BUFFER_SYMBOL (offset)))
{
sym = NILP (sym) ? PER_BUFFER_SYMBOL (offset) : sym;
diff --git a/src/buffer.h b/src/buffer.h
index 24e9c3fcbc..7367c2cb2b 100644
--- a/src/buffer.h
+++ b/src/buffer.h
@@ -1415,16 +1415,6 @@ OVERLAY_POSITION (Lisp_Object p)
extern bool valid_per_buffer_idx (int);
-/* Value is true if the variable with index IDX has a local value
- in buffer B. */
-
-INLINE bool
-PER_BUFFER_VALUE_P (struct buffer *b, int idx)
-{
- eassert (valid_per_buffer_idx (idx));
- return b->local_flags[idx];
-}
-
/* Set whether per-buffer variable with index IDX has a buffer-local
value in buffer B. VAL zero means it hasn't. */
@@ -1491,6 +1481,17 @@ set_per_buffer_value (struct buffer *b, int offset,
Lisp_Object value)
*(Lisp_Object *)(offset + (char *) b) = value;
}
+/* Value is true if the variable with offset OFFSET has a local value
+ in buffer B. */
+
+INLINE bool
+PER_BUFFER_VALUE_P (struct buffer *b, int offset)
+{
+ int idx = PER_BUFFER_IDX (offset);
+ eassert (idx == -1 || valid_per_buffer_idx (idx));
+ return idx == -1 || b->local_flags[idx];
+}
+
/* Downcase a character C, or make no change if that cannot be done. */
INLINE int
downcase (int c)
diff --git a/src/data.c b/src/data.c
index d547f5da5e..bd399e0439 100644
--- a/src/data.c
+++ b/src/data.c
@@ -1280,7 +1280,7 @@ store_symval_forwarding (lispfwd valcontents, Lisp_Object
newval,
{
struct buffer *b = XBUFFER (buf);
- if (! PER_BUFFER_VALUE_P (b, idx))
+ if (! PER_BUFFER_VALUE_P (b, offset))
set_per_buffer_value (b, offset, newval);
}
}
@@ -1597,8 +1597,8 @@ set_internal (Lisp_Object symbol, Lisp_Object newval,
Lisp_Object where,
{
int offset = XBUFFER_OBJFWD (innercontents)->offset;
int idx = PER_BUFFER_IDX (offset);
- if (idx > 0 && bindflag == SET_INTERNAL_SET
- && !PER_BUFFER_VALUE_P (buf, idx))
+ if (bindflag == SET_INTERNAL_SET
+ && !PER_BUFFER_VALUE_P (buf, offset))
{
if (let_shadows_buffer_binding_p (sym))
set_default_internal (symbol, newval, bindflag);
@@ -1899,7 +1899,7 @@ set_default_internal (Lisp_Object symbol, Lisp_Object
value,
{
struct buffer *b = XBUFFER (buf);
- if (!PER_BUFFER_VALUE_P (b, idx))
+ if (!PER_BUFFER_VALUE_P (b, offset))
set_per_buffer_value (b, offset, value);
}
}
@@ -2238,8 +2238,7 @@ BUFFER defaults to the current buffer. */)
if (BUFFER_OBJFWDP (valcontents))
{
int offset = XBUFFER_OBJFWD (valcontents)->offset;
- int idx = PER_BUFFER_IDX (offset);
- if (idx == -1 || PER_BUFFER_VALUE_P (buf, idx))
+ if (PER_BUFFER_VALUE_P (buf, offset))
return Qt;
}
return Qnil;
--
2.31.1
- bug#48264: [PATCH v4 03/14] Add and use BVAR_HAS_DEFAULT_VALUE_P, (continued)
- bug#48264: [PATCH v4 03/14] Add and use BVAR_HAS_DEFAULT_VALUE_P, Spencer Baugh, 2021/05/07
- bug#48264: [PATCH v4 01/14] Stop checking the constant default for enable_multibyte_characters, Spencer Baugh, 2021/05/07
- bug#48264: [PATCH v4 02/14] Take offset not idx in PER_BUFFER_VALUE_P, Spencer Baugh, 2021/05/07
- bug#48264: [PATCH v4 04/14] Combine unnecessarily separate loops in buffer.c, Spencer Baugh, 2021/05/07
- bug#48264: [PATCH v4 07/14] Use BVAR_OR_DEFAULT for per-buffer vars with defaults, Spencer Baugh, 2021/05/07
- bug#48264: [PATCH v4 10/14] Delete SET_PER_BUFFER_VALUE_P and buffer local_flags field, Spencer Baugh, 2021/05/07
- bug#48264: [PATCH v4 08/14] Remove unnecessary Qunbound check, Spencer Baugh, 2021/05/07
- bug#48264: [PATCH v4 09/14] Get rid of buffer_permanent_local_flags array, Spencer Baugh, 2021/05/07
- bug#48264: [PATCH v4 12/14] Assert that PER_BUFFER_IDX for Lisp variables is not 0, Spencer Baugh, 2021/05/07
- bug#48264: [PATCH v4 00/15] Speeding up setting the default for DEFVAR_PER_BUFFER vars, Stefan Monnier, 2021/05/08
- bug#48264: [PATCH v3 02/15] Take offset not idx in PER_BUFFER_VALUE_P,
Spencer Baugh <=
- bug#48264: [PATCH v3 04/15] Combine unnecessarily separate loops in buffer.c, Spencer Baugh, 2021/05/06
- bug#48264: [PATCH v3 03/15] Add and use BUFFER_DEFAULT_VALUE_P, Spencer Baugh, 2021/05/06