return SMOB_PTR (a);
}
-INLINE Lisp_Object
-make_lisp_proc (struct Lisp_Process *p)
-{
- return scm_new_smob (lisp_vectorlike_tag, (scm_t_bits) p);
-}
-
#define XSETINT(a, b) ((a) = make_number (b))
#define XSETFASTINT(a, b) ((a) = make_natnum (b))
#define XSETVECTOR(a, b) ((a) = (b)->header.self)
#define XSETSTRING(a, b) ((a) = (b)->self)
#define XSETSYMBOL(a, b) ((a) = scm_c_vector_ref (b, 0))
#define XSETMISC(a, b) (a) = ((union Lisp_Misc *) (b))->u_any.self
+#define make_lisp_proc(p) ((p)->header.self)
/* Pseudovector types. */
return scm_is_true (scm_symbol_interned_p (sym));
}
+extern Lisp_Object Ffboundp (Lisp_Object);
+extern Lisp_Object Fmakunbound (Lisp_Object);
+extern Lisp_Object Ffmakunbound (Lisp_Object);
+extern Lisp_Object Ffset (Lisp_Object, Lisp_Object);
+extern Lisp_Object Fsymbol_function (Lisp_Object);
+
INLINE Lisp_Object
SYMBOL_FUNCTION (Lisp_Object sym)
{
- return scm_call_1 (scm_c_public_ref ("elisp-functions", "symbol-function"), sym);
+ return Fsymbol_function (sym);
}
/* Value is non-zero if symbol is considered a constant, i.e. its
#define DEFUN_ARGS_8 (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, \
Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object)
-#define WRAP1(cfn, lfn) Lisp_Object cfn (Lisp_Object a) { return call1 (intern (lfn), a); }
+#define WRAP1(cfn, lfn) \
+ SCM_SNARF_INIT (DEFSYM (cfn ## _sym, lfn)) \
+ static Lisp_Object cfn ## _sym; \
+ Lisp_Object cfn (Lisp_Object a) \
+ { return call1 (cfn ## _sym, a); }
#define WRAP2(cfn, lfn) Lisp_Object cfn (Lisp_Object a, Lisp_Object b) { return call2 (intern (lfn), a, b); }
/* True if OBJ is a Lisp function. */
union specbinding. But only eval.c should access it. */
enum specbind_tag {
- SPECPDL_BACKTRACE, /* An element of the backtrace. */
SPECPDL_LET, /* A plain and simple dynamic let-binding. */
/* Tags greater than SPECPDL_LET must be "subkinds" of LET. */
SPECPDL_LET_LOCAL, /* A buffer-local let-binding. */
extern void init_eval (void);
extern void syms_of_eval (void);
extern void unwind_body (Lisp_Object);
-extern void record_in_backtrace (Lisp_Object function,
- Lisp_Object *args, ptrdiff_t nargs);
extern void mark_specpdl (void);
-extern void get_backtrace (Lisp_Object array);
-Lisp_Object backtrace_top_function (void);
extern bool let_shadows_buffer_binding_p (sym_t symbol);
extern bool let_shadows_global_binding_p (Lisp_Object symbol);
extern _Noreturn SCM abort_to_prompt (SCM, SCM);
Lisp_Object car = XCAR (object);
return EQ (car, Qlambda) || EQ (car, Qclosure);
}
+ else
+ return false;
}
+extern Lisp_Object xsymbol_fn;
+
INLINE sym_t
XSYMBOL (Lisp_Object a)
{
- return scm_call_1 (scm_c_public_ref ("language elisp runtime", "symbol-desc"),
- a);
+ return scm_call_1 (xsymbol_fn, a);
}
INLINE_HEADER_END