X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/b1d5ab0352b6132eee4feaf9091ce7dc7a3e6a84..b6964cb031b5aa25c34b06ba77540ab06fab2005:/src/data.c diff --git a/src/data.c b/src/data.c index 9977a3aaad..47706584f5 100644 --- a/src/data.c +++ b/src/data.c @@ -1,5 +1,5 @@ /* Primitive operations on Lisp data types for GNU Emacs Lisp interpreter. - Copyright (C) 1985-1986, 1988, 1993-1995, 1997-2014 Free Software + Copyright (C) 1985-1986, 1988, 1993-1995, 1997-2015 Free Software Foundation, Inc. This file is part of GNU Emacs. @@ -37,59 +37,8 @@ along with GNU Emacs. If not, see . */ #include "font.h" #include "keymap.h" -Lisp_Object Qnil, Qt, Qquote, Qlambda, Qunbound; -static Lisp_Object Qsubr; -Lisp_Object Qerror_conditions, Qerror_message, Qtop_level; -Lisp_Object Qerror, Quser_error, Qquit, Qargs_out_of_range; -static Lisp_Object Qwrong_length_argument; -static Lisp_Object Qwrong_type_argument; -Lisp_Object Qvoid_variable, Qvoid_function; -static Lisp_Object Qcyclic_function_indirection; -static Lisp_Object Qcyclic_variable_indirection; -Lisp_Object Qcircular_list; -static Lisp_Object Qsetting_constant; -Lisp_Object Qinvalid_read_syntax; -Lisp_Object Qinvalid_function, Qwrong_number_of_arguments, Qno_catch; -Lisp_Object Qend_of_file, Qarith_error, Qmark_inactive; -Lisp_Object Qbeginning_of_buffer, Qend_of_buffer, Qbuffer_read_only; -Lisp_Object Qtext_read_only; - -Lisp_Object Qintegerp, Qwholenump, Qsymbolp, Qlistp, Qconsp; -static Lisp_Object Qnatnump; -Lisp_Object Qstringp, Qarrayp, Qsequencep, Qbufferp; -Lisp_Object Qchar_or_string_p, Qmarkerp, Qinteger_or_marker_p, Qvectorp; -Lisp_Object Qbool_vector_p; -Lisp_Object Qbuffer_or_string_p; -static Lisp_Object Qkeywordp, Qboundp; -Lisp_Object Qfboundp; -Lisp_Object Qchar_table_p, Qvector_or_char_table_p; - -Lisp_Object Qcdr; -static Lisp_Object Qad_advice_info, Qad_activate_internal; - -static Lisp_Object Qdomain_error, Qsingularity_error, Qunderflow_error; -Lisp_Object Qrange_error, Qoverflow_error; - -Lisp_Object Qfloatp; -Lisp_Object Qnumberp, Qnumber_or_marker_p; - -Lisp_Object Qinteger, Qsymbol; -static Lisp_Object Qcons, Qfloat, Qmisc, Qstring, Qvector; -Lisp_Object Qwindow; -static Lisp_Object Qoverlay, Qwindow_configuration; -static Lisp_Object Qprocess, Qmarker; -static Lisp_Object Qcompiled_function, Qframe; -Lisp_Object Qbuffer; -static Lisp_Object Qchar_table, Qbool_vector, Qhash_table; -static Lisp_Object Qsubrp; -static Lisp_Object Qmany, Qunevalled; -Lisp_Object Qfont_spec, Qfont_entity, Qfont_object; -static Lisp_Object Qdefun; - -Lisp_Object Qinteractive_form; -static Lisp_Object Qdefalias_fset_function; - -static void swap_in_symval_forwarding (struct Lisp_Symbol *, struct Lisp_Buffer_Local_Value *); +static void swap_in_symval_forwarding (struct Lisp_Symbol *, + struct Lisp_Buffer_Local_Value *); static bool BOOLFWDP (union Lisp_Fwd *a) @@ -227,7 +176,8 @@ args_out_of_range_3 (Lisp_Object a1, Lisp_Object a2, Lisp_Object a3) /* Data type predicates. */ DEFUN ("eq", Feq, Seq, 2, 2, 0, - doc: /* Return t if the two args are the same Lisp object. */) + doc: /* Return t if the two args are the same Lisp object. */ + attributes: const) (Lisp_Object obj1, Lisp_Object obj2) { if (EQ (obj1, obj2)) @@ -236,7 +186,8 @@ DEFUN ("eq", Feq, Seq, 2, 2, 0, } DEFUN ("null", Fnull, Snull, 1, 1, 0, - doc: /* Return t if OBJECT is nil. */) + doc: /* Return t if OBJECT is nil. */ + attributes: const) (Lisp_Object object) { if (NILP (object)) @@ -314,7 +265,8 @@ for example, (type-of 1) returns `integer'. */) } DEFUN ("consp", Fconsp, Sconsp, 1, 1, 0, - doc: /* Return t if OBJECT is a cons cell. */) + doc: /* Return t if OBJECT is a cons cell. */ + attributes: const) (Lisp_Object object) { if (CONSP (object)) @@ -323,7 +275,8 @@ DEFUN ("consp", Fconsp, Sconsp, 1, 1, 0, } DEFUN ("atom", Fatom, Satom, 1, 1, 0, - doc: /* Return t if OBJECT is not a cons cell. This includes nil. */) + doc: /* Return t if OBJECT is not a cons cell. This includes nil. */ + attributes: const) (Lisp_Object object) { if (CONSP (object)) @@ -333,7 +286,8 @@ DEFUN ("atom", Fatom, Satom, 1, 1, 0, DEFUN ("listp", Flistp, Slistp, 1, 1, 0, doc: /* Return t if OBJECT is a list, that is, a cons cell or nil. -Otherwise, return nil. */) +Otherwise, return nil. */ + attributes: const) (Lisp_Object object) { if (CONSP (object) || NILP (object)) @@ -342,7 +296,8 @@ Otherwise, return nil. */) } DEFUN ("nlistp", Fnlistp, Snlistp, 1, 1, 0, - doc: /* Return t if OBJECT is not a list. Lists include nil. */) + doc: /* Return t if OBJECT is not a list. Lists include nil. */ + attributes: const) (Lisp_Object object) { if (CONSP (object) || NILP (object)) @@ -351,7 +306,8 @@ DEFUN ("nlistp", Fnlistp, Snlistp, 1, 1, 0, } DEFUN ("symbolp", Fsymbolp, Ssymbolp, 1, 1, 0, - doc: /* Return t if OBJECT is a symbol. */) + doc: /* Return t if OBJECT is a symbol. */ + attributes: const) (Lisp_Object object) { if (SYMBOLP (object)) @@ -384,7 +340,8 @@ DEFUN ("vectorp", Fvectorp, Svectorp, 1, 1, 0, } DEFUN ("stringp", Fstringp, Sstringp, 1, 1, 0, - doc: /* Return t if OBJECT is a string. */) + doc: /* Return t if OBJECT is a string. */ + attributes: const) (Lisp_Object object) { if (STRINGP (object)) @@ -487,7 +444,8 @@ DEFUN ("byte-code-function-p", Fbyte_code_function_p, Sbyte_code_function_p, } DEFUN ("char-or-string-p", Fchar_or_string_p, Schar_or_string_p, 1, 1, 0, - doc: /* Return t if OBJECT is a character or a string. */) + doc: /* Return t if OBJECT is a character or a string. */ + attributes: const) (register Lisp_Object object) { if (CHARACTERP (object) || STRINGP (object)) @@ -496,7 +454,8 @@ DEFUN ("char-or-string-p", Fchar_or_string_p, Schar_or_string_p, 1, 1, 0, } DEFUN ("integerp", Fintegerp, Sintegerp, 1, 1, 0, - doc: /* Return t if OBJECT is an integer. */) + doc: /* Return t if OBJECT is an integer. */ + attributes: const) (Lisp_Object object) { if (INTEGERP (object)) @@ -514,7 +473,8 @@ DEFUN ("integer-or-marker-p", Finteger_or_marker_p, Sinteger_or_marker_p, 1, 1, } DEFUN ("natnump", Fnatnump, Snatnump, 1, 1, 0, - doc: /* Return t if OBJECT is a nonnegative integer. */) + doc: /* Return t if OBJECT is a nonnegative integer. */ + attributes: const) (Lisp_Object object) { if (NATNUMP (object)) @@ -523,7 +483,8 @@ DEFUN ("natnump", Fnatnump, Snatnump, 1, 1, 0, } DEFUN ("numberp", Fnumberp, Snumberp, 1, 1, 0, - doc: /* Return t if OBJECT is a number (floating point or integer). */) + doc: /* Return t if OBJECT is a number (floating point or integer). */ + attributes: const) (Lisp_Object object) { if (NUMBERP (object)) @@ -543,7 +504,8 @@ DEFUN ("number-or-marker-p", Fnumber_or_marker_p, } DEFUN ("floatp", Ffloatp, Sfloatp, 1, 1, 0, - doc: /* Return t if OBJECT is a floating point number. */) + doc: /* Return t if OBJECT is a floating point number. */ + attributes: const) (Lisp_Object object) { if (FLOATP (object)) @@ -729,7 +691,7 @@ DEFUN ("fset", Ffset, Sfset, 2, 2, 0, /* Convert to eassert or remove after GC bug is found. In the meantime, check unconditionally, at a slight perf hit. */ - if (valid_lisp_object_p (definition) < 1) + if (! valid_lisp_object_p (definition)) emacs_abort (); set_symbol_function (symbol, definition); @@ -1010,9 +972,8 @@ wrong_range (Lisp_Object min, Lisp_Object max, Lisp_Object wrong) AUTO_STRING (value_should_be_from, "Value should be from "); AUTO_STRING (to, " to "); xsignal2 (Qerror, - Fconcat (4, ((Lisp_Object []) - {value_should_be_from, Fnumber_to_string (min), - to, Fnumber_to_string (max)})), + CALLN (Fconcat, value_should_be_from, Fnumber_to_string (min), + to, Fnumber_to_string (max)), wrong); } @@ -2164,8 +2125,6 @@ DEFUN ("indirect-function", Findirect_function, Sindirect_function, 1, 2, 0, doc: /* Return the function at the end of OBJECT's function chain. If OBJECT is not a symbol, just return it. Otherwise, follow all function indirections to find the final function binding and return it. -If the final symbol in the chain is unbound, signal a void-function error. -Optional arg NOERROR non-nil means to return nil instead of signaling. Signal a cyclic-function-indirection error if there is a loop in the function chain of symbols. */) (register Lisp_Object object, Lisp_Object noerror) @@ -2180,9 +2139,6 @@ function chain of symbols. */) if (!NILP (result)) return result; - if (NILP (noerror)) - xsignal1 (Qvoid_function, object); - return Qnil; } @@ -3005,7 +2961,8 @@ DEFUN ("lognot", Flognot, Slognot, 1, 1, 0, DEFUN ("byteorder", Fbyteorder, Sbyteorder, 0, 0, 0, doc: /* Return the byteorder for the machine. Returns 66 (ASCII uppercase B) for big endian machines or 108 (ASCII -lowercase l) for small endian machines. */) +lowercase l) for small endian machines. */ + attributes: const) (void) { unsigned i = 0x04030201; @@ -3583,10 +3540,6 @@ syms_of_data (void) PUT_ERROR (Qunderflow_error, Fcons (Qdomain_error, arith_tail), "Arithmetic underflow error"); - staticpro (&Qnil); - staticpro (&Qt); - staticpro (&Qunbound); - /* Types that type-of returns. */ DEFSYM (Qinteger, "integer"); DEFSYM (Qsymbol, "symbol");