varref:
{
Lisp_Object v1 = vectorp[op], v2;
- if (!SYMBOLP (v1)
- || XSYMBOL (v1)->u.s.redirect != SYMBOL_PLAINVAL
- || (v2 = SYMBOL_VAL (XSYMBOL (v1)), BASE_EQ (v2, Qunbound)))
+ if (!BARE_SYMBOL_P (v1)
+ || XBARE_SYMBOL (v1)->u.s.redirect != SYMBOL_PLAINVAL
+ || (v2 = XBARE_SYMBOL (v1)->u.s.val.value,
+ BASE_EQ (v2, Qunbound)))
v2 = Fsymbol_value (v1);
PUSH (v2);
NEXT;
Lisp_Object val = POP;
/* Inline the most common case. */
- if (SYMBOLP (sym)
+ if (BARE_SYMBOL_P (sym)
&& !BASE_EQ (val, Qunbound)
- && XSYMBOL (sym)->u.s.redirect == SYMBOL_PLAINVAL
- && !SYMBOL_TRAPPED_WRITE_P (sym))
- SET_SYMBOL_VAL (XSYMBOL (sym), val);
+ && XBARE_SYMBOL (sym)->u.s.redirect == SYMBOL_PLAINVAL
+ && !XBARE_SYMBOL (sym)->u.s.trapped_write)
+ SET_SYMBOL_VAL (XBARE_SYMBOL (sym), val);
else
set_internal (sym, val, Qnil, SET_INTERNAL_SET);
}
do_debug_on_call (Qlambda, count1);
Lisp_Object original_fun = call_fun;
- if (SYMBOLP (call_fun))
- call_fun = XSYMBOL (call_fun)->u.s.function;
+ /* Calls to symbols-with-pos don't need to be on the fast path. */
+ if (BARE_SYMBOL_P (call_fun))
+ call_fun = XBARE_SYMBOL (call_fun)->u.s.function;
if (COMPILEDP (call_fun))
{
Lisp_Object template = AREF (call_fun, COMPILED_ARGLIST);