1. 19 Nov, 2011 1 commit
  2. 09 Sep, 2011 1 commit
  3. 04 Sep, 2011 1 commit
  4. 29 Aug, 2011 1 commit
    • Paul Eggert's avatar
      * print.c (float_to_string): Detect width overflow more reliably. · aca216ff
      Paul Eggert authored
      (print_object): Make sprintf buffer a bit bigger, to avoid potential
      buffer overrun.  Don't assume list length fits in 'int'.  Treat
      print length of 0 as 0, not as infinity; to be consistent with other
      uses of print length in this function.  Don't overflow print length
      index.  Don't assume hash table size fits in 'long', or that
      vectorlike size fits in 'unsigned long'.
      aca216ff
  5. 28 Jul, 2011 1 commit
  6. 07 Jul, 2011 1 commit
  7. 24 Jun, 2011 1 commit
  8. 23 Jun, 2011 1 commit
  9. 08 Jun, 2011 2 commits
  10. 31 May, 2011 1 commit
    • Paul Eggert's avatar
      Remove arbitrary limit of 2**31 entries in hash tables. · 0de4bb68
      Paul Eggert authored
      * category.c (hash_get_category_set): Use 'EMACS_UINT' and 'EMACS_INT'
      for hashes and hash indexes, instead of 'unsigned' and 'int'.
      * ccl.c (ccl_driver): Likewise.
      * charset.c (Fdefine_charset_internal): Likewise.
      * charset.h (struct charset.hash_index): Likewise.
      * composite.c (get_composition_id, gstring_lookup_cache):
      (composition_gstring_put_cache): Likewise.
      * composite.h (struct composition.hash_index): Likewise.
      * dispextern.h (struct image.hash): Likewise.
      * fns.c (next_almost_prime, larger_vector, cmpfn_eql):
      (cmpfn_equal, cmpfn_user_defined, hashfn_eq, hashfn_eql):
      (hashfn_equal, hashfn_user_defined, make_hash_table):
      (maybe_resize_hash_table, hash_lookup, hash_put):
      (hash_remove_from_table, hash_clear, sweep_weak_table, SXHASH_COMBINE):
      (sxhash_string, sxhash_list, sxhash_vector, sxhash_bool_vector):
      (Fsxhash, Fgethash, Fputhash, Fmaphash): Likewise.
      * image.c (make_image, search_image_cache, lookup_image):
      (xpm_put_color_table_h): Likewise.
      * lisp.h (struct Lisp_Hash_Table): Likewise, for 'count', 'cmpfn',
      and 'hashfn' members.
      * minibuf.c (Ftry_completion, Fall_completions, Ftest_completion):
      Likewise.
      * print.c (print): Likewise.
      * alloc.c (allocate_vectorlike): Check for overflow in vector size
      calculations.
      * ccl.c (ccl_driver): Check for overflow when converting EMACS_INT
      to int.
      * fns.c, image.c: Remove unnecessary static decls that would otherwise
      need to be updated by these changes.
      * fns.c (make_hash_table, maybe_resize_hash_table): Check for integer
      overflow with large hash tables.
      (make_hash_table, maybe_resize_hash_table, Fmake_hash_table):
      Prefer the faster XFLOAT_DATA to XFLOATINT where either will do.
      (SXHASH_REDUCE): New macro.
      (sxhash_string, sxhash_list, sxhash_vector, sxhash_bool_vector):
      Use it instead of discarding useful hash info with large hash values.
      (sxhash_float): New function.
      (sxhash): Use it.  No more need for "& INTMASK" due to above changes.
      * lisp.h (FIXNUM_BITS): New macro, useful for SXHASH_REDUCE etc.
      (MOST_NEGATIVE_FIXNUM, MOST_POSITIVE_FIXNUM, INTMASK): Rewrite
      to use FIXNUM_BITS, as this simplifies things.
      (next_almost_prime, larger_vector, sxhash, hash_lookup, hash_put):
      Adjust signatures to match updated version of code.
      (consing_since_gc): Now EMACS_INT, since a single hash table can
      use more than INT_MAX bytes.
      0de4bb68
  11. 21 May, 2011 1 commit
    • Paul Eggert's avatar
      merge count_size_as_multibyte, parse_str_to_multibyte · de883a70
      Paul Eggert authored
      * character.c, character.h (count_size_as_multibyte):
      Renamed from parse_str_to_multibyte; all uses changed.
      Check for integer overflow.
      * insdel.c, lisp.h (count_size_as_multibyte): Remove,
      since it's now a duplicate of the other.  This is more of
      a character than a buffer op, so better that it's in character.c.
      * fns.c, print.c: Adjust to above changes.
      de883a70
  12. 09 May, 2011 1 commit
    • Eli Zaretskii's avatar
      Backport revisions... · 14fe7b53
      Eli Zaretskii authored
      Backport revisions 2011-04-24T05:30:24Z!eggert@cs.ucla.edu..2011-04-25T19:40:22Z!eggert@cs.ucla.edu (inclusive) from trunk (bug#8623)
      
      	The next log entry shows the actual changes by Paul Eggert.
      
       Fix a problem with aliasing and vector headers.
       GCC 4.6.0 optimizes based on type-based alias analysis.  For
       example, if b is of type struct buffer * and v of type struct
       Lisp_Vector *, then gcc -O2 was incorrectly assuming that &b->size
       != &v->size, and therefore "v->size = 1; b->size = 2; return
       v->size;" must therefore return 1.  This assumption is incorrect
       for Emacs, since it type-puns struct Lisp_Vector * with many other
       types.  To fix this problem, this patch adds a new type struct
       vector_header that documents the constraints on layout of vectors
       and pseudovectors, and helps optimizing compilers not get fooled
       by Emacs's type punning.  It also adds the macros XSETTYPED_PVECTYPE
       XSETTYPED_PSEUDOVECTOR, TYPED_PSEUDOVECTORP, for similar reasons.
       src/lisp.h (XVECTOR_SIZE): New convenience macro.  All previous uses of
       XVECTOR (foo)->size replaced to use this macro, to avoid the hassle
       of writing XVECTOR (foo)->header.size.
       src/lisp.h: Say "vectorlike header" rather than "vector header.
       (struct vectorlike_header): Rename from struct vector_header.
       (XVECTORLIKE_HEADER_SIZE): Renamed from XVECTOR_HEADER_SIZE.
       All uses changed.
       (XVECTOR_HEADER_SIZE): New macro, for use in XSETPSEUDOVECTOR.
       (XSETTYPED_PVECTYPE): New macro, specifying the name of the size
       member.
       (XSETPVECTYPE): Rewrite in terms of new macro.
       (XSETPVECTYPESIZE): New macro, specifying both type and size.
       This is a bit clearer, and further avoids the possibility of
       undesirable aliasing.
       (XSETTYPED_PSEUDOVECTOR): New macro, specifying the size.
       (XSETPSEUDOVECTOR): Rewrite in terms of XSETTYPED_PSEUDOVECTOR
       and XVECTOR_HEADER_SIZE.
       (XSETSUBR): Rewrite in terms of XSETTYPED_PSEUDOVECTOR and XSIZE,
       since Lisp_Subr is a special case (no "next" field).
       (ASIZE): Rewrite in terms of XVECTOR_SIZE.
       (struct vector_header): New type.
       (TYPED_PSEUDOVECTORP): New macro, also specifying the C type of the
       object, to help avoid aliasing.
       (PSEUDOVECTORP): Rewrite in terms of TYPED_PSEUDOVECTORP.
       (SUBRP): Likewise, since Lisp_Subr is a special case.
       src/lisp.h (struct Lisp_Vector, struct Lisp_Char_Table):
       (struct Lisp_Sub_Char_Table, struct Lisp_Bool_Vector):
       (struct Lisp_Hash_Table): Combine first two members into a single
       struct vector_header member.  All uses of "size" and "next" members
       changed to be "header.size" and "header.next".
       src/buffer.h (struct buffer): Likewise.
       src/font.h (struct font_spec, struct font_entity, struct font): Likewise.
       src/frame.h (struct frame): Likewise.
       src/process.h (struct Lisp_Process): Likewise.
       src/termhooks.h (struct terminal): Likewise.
       src/window.c (struct save_window_data, struct saved_window): Likewise.
       src/window.h (struct window): Likewise.
       src/alloc.c (allocate_buffer, Fmake_bool_vector, allocate_pseudovector):
       Use XSETPVECTYPESIZE, not XSETPVECTYPE, to avoid aliasing problems.
       src/buffer.c (init_buffer_once): Likewise.
       src/lread.c (defsubr): Use XSETTYPED_PVECTYPE, since Lisp_Subr is a
       special case.
       src/process.c (Fformat_network_address): Use local var for size,
       for brevity.
       src/fns.c (vector): Remove; this old hack is no longer needed.
       src/bytecode.c (exec_byte_code): Don't use XVECTOR before CHECK_VECTOR.
      14fe7b53
  13. 25 Apr, 2011 2 commits
    • Paul Eggert's avatar
      * lisp.h: (XVECTOR_SIZE): Remove. All uses replaced with ASIZE. · 77b37c05
      Paul Eggert authored
      (ASIZE): Now contains previous implementation of XVECTOR_SIZE
      instead of invoking XVECTOR_SIZE.
      77b37c05
    • Paul Eggert's avatar
      lisp.h: Fix a problem with aliasing and vector headers. · eab3844f
      Paul Eggert authored
      GCC 4.6.0 optimizes based on type-based alias analysis.  For
      example, if b is of type struct buffer * and v of type struct
      Lisp_Vector *, then gcc -O2 was incorrectly assuming that &b->size
      != &v->size, and therefore "v->size = 1; b->size = 2; return
      v->size;" must therefore return 1.  This assumption is incorrect
      for Emacs, since it type-puns struct Lisp_Vector * with many other
      types.  To fix this problem, this patch adds a new type struct
      vector_header that documents the constraints on layout of vectors
      and pseudovectors, and helps optimizing compilers not get fooled
      by Emacs's type punning.  It also adds the macros XSETTYPED_PVECTYPE
      XSETTYPED_PSEUDOVECTOR, TYPED_PSEUDOVECTORP, for similar reasons.
      * lisp.h (XVECTOR_SIZE): New convenience macro.  All previous uses of
      XVECTOR (foo)->size replaced to use this macro, to avoid the hassle
      of writing XVECTOR (foo)->header.size.
      (XVECTOR_HEADER_SIZE): New macro, for use in XSETPSEUDOVECTOR.
      (XSETTYPED_PVECTYPE): New macro, specifying the name of the size
      member.
      (XSETPVECTYPE): Rewrite in terms of new macro.
      (XSETPVECTYPESIZE): New macro, specifying both type and size.
      This is a bit clearer, and further avoids the possibility of
      undesirable aliasing.
      (XSETTYPED_PSEUDOVECTOR): New macro, specifying the size.
      (XSETPSEUDOVECTOR): Rewrite in terms of XSETTYPED_PSEUDOVECTOR
      and XVECTOR_HEADER_SIZE.
      (XSETSUBR): Rewrite in terms of XSETTYPED_PSEUDOVECTOR and XSIZE,
      since Lisp_Subr is a special case (no "next" field).
      (ASIZE): Rewrite in terms of XVECTOR_SIZE.
      (struct vector_header): New type.
      (TYPED_PSEUDOVECTORP): New macro, also specifying the C type of the
      object, to help avoid aliasing.
      (PSEUDOVECTORP): Rewrite in terms of TYPED_PSEUDOVECTORP.
      (SUBRP): Likewise, since Lisp_Subr is a special case.
      * lisp.h (struct Lisp_Vector, struct Lisp_Char_Table):
      (struct Lisp_Sub_Char_Table, struct Lisp_Bool_Vector):
      (struct Lisp_Hash_Table): Combine first two members into a single
      struct vector_header member.  All uses of "size" and "next" members
      changed to be "header.size" and "header.next".
      * buffer.h (struct buffer): Likewise.
      * font.h (struct font_spec, struct font_entity, struct font): Likewise.
      * frame.h (struct frame): Likewise.
      * process.h (struct Lisp_Process): Likewise.
      * termhooks.h (struct terminal): Likewise.
      * window.c (struct save_window_data, struct saved_window): Likewise.
      * window.h (struct window): Likewise.
      * alloc.c (allocate_buffer, Fmake_bool_vector, allocate_pseudovector):
      Use XSETPVECTYPESIZE, not XSETPVECTYPE, to avoid aliasing problems.
      * buffer.c (init_buffer_once): Likewise.
      * lread.c (defsubr): Use XSETTYPED_PVECTYPE, since Lisp_Subr is a
      special case.
      * process.c (Fformat_network_address): Use local var for size,
      for brevity.
      eab3844f
  14. 19 Apr, 2011 2 commits
    • Paul Eggert's avatar
      Avoid 0 flag with %p printf format. · 6f04d126
      Paul Eggert authored
      6f04d126
    • Paul Eggert's avatar
      Replace pEd with more-general pI, and fix some printf arg casts. · c2982e87
      Paul Eggert authored
      * lisp.h (pI): New macro, generalizing old pEd macro to other
      conversion specifiers.  For example, use "...%"pI"d..." rather
      than "...%"pEd"...".
      (pEd): Remove.  All uses replaced with similar uses of pI.
      * src/m/amdx86-64.h, src/m/ia64.h, src/m/ibms390x.h: Likewise.
      * alloc.c (check_pure_size): Don't overflow by converting size to int.
      * bidi.c (bidi_dump_cached_states): Use pI to avoid cast.
      * data.c (Fnumber_to_string): Use pI instead of if-then-else-abort.
      * dbusbind.c (xd_append_arg): Use pI to avoid cast.
      (Fdbus_method_return_internal, Fdbus_method_error_internal): Likewise.
      * font.c (font_unparse_xlfd): Avoid potential buffer overrun on
      64-bit hosts.
      (font_unparse_xlfd, font_unparse_fcname): Use pI to avoid casts.
      * keyboard.c (record_char, modify_event_symbol): Use pI to avoid casts.
      * print.c (safe_debug_print, print_object): Likewise.
      (print_object): Don't overflow by converting EMACS_INT or EMACS_UINT
      to int.
      Use pI instead of if-then-else-abort.  Use %p to avoid casts.
      * process.c (Fmake_network_process): Use pI to avoid cast.
      * region-cache.c (pp_cache): Likewise.
      * xdisp.c (decode_mode_spec): Likewise.
      * xrdb.c (x_load_resources) [USE_MOTIF]: Use pI to avoid undefined
      behavior on 64-bit hosts with printf arg.
      * xselect.c (x_queue_event): Use %p to avoid casts.
      (x_stop_queuing_selection_requests): Likewise.
      (x_get_window_property): Don't truncate byte count to an 'int'
      when tracing.
      c2982e87
  15. 14 Apr, 2011 4 commits
  16. 11 Apr, 2011 2 commits
    • Paul Eggert's avatar
      Declare Lisp_Object Q* variables to be 'static' if not exproted. · 955cbe7b
      Paul Eggert authored
      This makes it easier for human readers (and static analyzers)
      to see whether these variables are used from other modules.
      * alloc.c, buffer.c, bytecode.c, callint.c, casetab.c, category.c:
      * ccl.c, character.c, charset.c, cmds.c, coding.c, composite.c:
      * data.c, dbusbind.c, dired.c, editfns.c, eval.c, fileio.c, fns.c:
      * font.c, frame.c, fringe.c, ftfont.c, image.c, keyboard.c, keymap.c:
      * lread.c, macros.c, minibuf.c, print.c, process.c, search.c:
      * sound.c, syntax.c, textprop.c, window.c, xdisp.c, xfaces.c, xfns.c:
      * xmenu.c, xselect.c:
      Declare Q* vars static if they are not used in other modules.
      * ccl.h, character.h, charset.h, coding.h, composite.h, font.h:
      * frame.h, intervals.h, keyboard.h, lisp.h, process.h, syntax.h:
      Remove decls of unexported vars.
      * keyboard.h (EVENT_HEAD_UNMODIFIED): Remove now-unused macro.
      955cbe7b
    • Paul Eggert's avatar
      Make Emacs functions such as Fatom 'static' by default. · 16a97296
      Paul Eggert authored
      This makes it easier for human readers (and static analyzers)
      to see whether these functions can be called from other modules.
      DEFUN now defines a static function.  To make the function external
      so that it can be used in other C modules, use the new macro DEFUE.
      * lisp.h (DEFINE_FUNC): New macro, with the old contents of DEFUN.
      (DEFUN): Rewrite in terms of DEFINE_FUNC.  It now generates a
      static function definition.  Use DEFUE if you want an extern one.
      (DEFUE, INFUN): New macros.
      (Funibyte_char_to_multibyte, Fsyntax_table_p, Finit_image_library):
      (Feval_region, Fbacktrace, Ffetch_bytecode, Fswitch_to_buffer):
      (Ffile_executable_p, Fmake_symbolic_link, Fcommand_execute):
      (Fget_process, Fdocumentation_property, Fbyte_code, Ffile_attributes):
      Remove decls, since these functions are now static.
      (Funintern, Fget_internal_run_time): New decls, since these functions
      were already external.
      * alloc.c, buffer.c, callint.c, callproc.c, casefiddle.c, casetab.c:
      * ccl.c, character.c, chartab.c, cmds.c, coding.c, data.c, dispnew.c:
      * doc.c, editfns.c, emacs.c, eval.c, fileio.c, filelock.c, floatfns.c:
      * fns.c, font.c, fontset.c, frame.c, image.c, indent.c:
      * keyboard.c, keymap.c, lread.c:
      * macros.c, marker.c, menu.c, minibuf.c, print.c, process.c, search.c:
      * syntax.c, term.c, terminal.c, textprop.c, undo.c:
      * window.c, xdisp.c, xfaces.c, xfns.c, xmenu.c, xsettings.c:
      Mark functions with DEFUE instead of DEFUN,
      if they are used in other modules.
      * buffer.c (Fset_buffer_major_mode, Fdelete_overlay): New forward
      decls for now-static functions.
      * buffer.h (Fdelete_overlay): Remove decl.
      * callproc.c (Fgetenv_internal): Mark as internal.
      * composite.c (Fremove_list_of_text_properties): Remove decl.
      (Fcomposition_get_gstring): New forward static decl.
      * composite.h (Fcomposite_get_gstring): Remove decl.
      * dired.c (Ffile_attributes): New forward static decl.
      * doc.c (Fdocumntation_property): New forward static decl.
      * eval.c (Ffetch_bytecode): New forward static decl.
      (Funintern): Remove extern decl; now in .h file where it belongs.
      * fileio.c (Fmake_symbolic_link): New forward static decl.
      * image.c (Finit_image_library): New forward static decl.
      * insdel.c (Fcombine_after_change_execute): Make forward decl static.
      * intervals.h (Fprevious_property_change):
      (Fremove_list_of_text_properties): Remove decls.
      * keyboard.c (Fthis_command_keys): Remove decl.
      (Fcommand_execute): New forward static decl.
      * keymap.c (Flookup_key): New forward static decl.
      (Fcopy_keymap): Now static.
      * keymap.h (Flookup_key): Remove decl.
      * process.c (Fget_process): New forward static decl.
      (Fprocess_datagram_address): Mark as internal.
      * syntax.c (Fsyntax_table_p): New forward static decl.
      (skip_chars): Remove duplicate decl.
      * textprop.c (Fprevious_property_change): New forward static decl.
      * window.c (Fset_window_fringes, Fset_window_scroll_bars):
      Now internal.
      (Fset_window_margins, Fset_window_vscroll): New forward static decls.
      * window.h (Fset_window_vscroll, Fset_window_margins): Remove decls.
      16a97296
  17. 08 Apr, 2011 1 commit
    • Chong Yidong's avatar
      Remove internal_with_output_to_temp_buffer, replacing sole user with Lisp. · cbb59342
      Chong Yidong authored
      * lisp/help.el (help-form-show): New function, to be called from C.
      Put help-form output in a buffer named differently than *Help*.
      
      * src/keyboard.c (read_char): Call Lisp function help-form-show,
      instead of using internal_with_output_to_temp_buffer.
      (Qhelp_form_show): New var.
      
      * src/lisp.h (internal_with_output_to_temp_buffer): Remove prototype.
      
      * src/print.c (internal_with_output_to_temp_buffer): Function deleted.
      cbb59342
  18. 04 Apr, 2011 1 commit
  19. 01 Apr, 2011 1 commit
  20. 28 Mar, 2011 1 commit
    • Juanma Barranquero's avatar
      src/*.c: Remove unused parameters and other warnings. · 1db5b1ad
      Juanma Barranquero authored
      * dispextern.h (string_buffer_position): Remove declaration.
      
      * print.c (strout): Remove parameter `multibyte', unused since
        1999-08-21T19:30:21Z!gerd@gnu.org.  All callers changed.
      
      * search.c (boyer_moore): Remove parameters `len', `pos' and `lim',
        never used since function introduction in 1998-02-08T21:33:56Z!rms@gnu.org.
        All callers changed.
      
      * w32.c (_wsa_errlist): Use braces for struct initializers.
      
      * xdisp.c (string_buffer_position_lim): Remove parameter `w',
        never used since function introduction in 2001-03-09T18:41:50Z!gerd@gnu.org.
        All callers changed.
        (string_buffer_position): Likewise.  Also, make static (it's never
        used outside xdisp.c).
        (cursor_row_p): Remove parameter `w', unused since
        2000-10-17T16:08:57Z!gerd@gnu.org.  All callers changed.
        (decode_mode_spec): Remove parameter `precision', introduced during
        Gerd Moellmann's rewrite at 1999-07-21T21:43:52Z!gerd@gnu.org, but never used.
        All callers changed.
      1db5b1ad
  21. 16 Mar, 2011 3 commits
  22. 25 Feb, 2011 1 commit
    • Stefan Monnier's avatar
      Get rid of funvec. · 876c194c
      Stefan Monnier authored
      * lisp/emacs-lisp/bytecomp.el (byte-compile-lapcode): Handle new form of
      `byte-constant'.
      (byte-compile-close-variables, displaying-byte-compile-warnings):
      Add edebug spec.
      (byte-compile-toplevel-file-form): New fun, split out of
      byte-compile-file-form.
      (byte-compile-from-buffer): Use it to avoid applying cconv
      multiple times.
      (byte-compile): Only strip `function' if it's present.
      (byte-compile-lambda): Add `reserved-csts' argument.
      Use new lexenv arg of byte-compile-top-level.
      (byte-compile-reserved-constants): New var.
      (byte-compile-constants-vector): Obey it.
      (byte-compile-constants-vector): Handle new `byte-constant' form.
      (byte-compile-top-level): Add args `lexenv' and `reserved-csts'.
      (byte-compile-form): Don't check callargs here.
      (byte-compile-normal-call): Do it here instead.
      (byte-compile-push-unknown-constant)
      (byte-compile-resolve-unknown-constant): Remove, unused.
      (byte-compile-make-closure): Use `make-byte-code' rather than `curry',
      putting the environment into the "constant" pool.
      (byte-compile-get-closed-var): Use special byte-constant.
      * lisp/emacs-lisp/byte-opt.el (byte-optimize-form-code-walker): Handle new
      intermediate special form `internal-make-vector'.
      (byte-optimize-lapcode): Handle new form of `byte-constant'.
      * lisp/help-fns.el (describe-function-1): Don't handle funvecs.
      * lisp/emacs-lisp/macroexp.el (macroexpand-all-1): Only convert quote to
      function if the content is a lambda expression, not if it's a closure.
      * emacs-lisp/eieio-come.el: Remove.
      * lisp/emacs-lisp/eieio.el: Don't require eieio-comp.
      (defmethod): Do a bit more work to find the body and wrap it into
      a function before passing it to eieio-defmethod.
      (eieio-defmethod): New arg `code' for it.
      * lisp/emacs-lisp/debug.el (debugger-setup-buffer): Don't hide things in
      debugger backtrace.
      * lisp/emacs-lisp/cl-extra.el (cl-macroexpand-all): Use backquotes, and be
      more careful when quoting a function value.
      * lisp/emacs-lisp/cconv.el (cconv-freevars): Accept defvar/defconst.
      (cconv-closure-convert-rec): Catch stray `internal-make-closure'.
      * lisp/Makefile.in (COMPILE_FIRST): Compile pcase and cconv early.
      
      * src/eval.c (Qcurry): Remove.
      (funcall_funvec): Remove.
      (funcall_lambda): Move new byte-code handling to reduce impact.
      Treat all args as lexical in the case of lexbind.
      (Fcurry): Remove.
      * src/data.c (Qfunction_vector): Remove.
      (Ffunvecp): Remove.
      * src/lread.c (read1): Revert to calling make_byte_code here.
      (read_vector): Don't call make_byte_code any more.
      * src/lisp.h (enum pvec_type): Rename back to PVEC_COMPILED.
      (XSETCOMPILED): Rename back from XSETFUNVEC.
      (FUNVEC_SIZE): Remove.
      (FUNVEC_COMPILED_TAG_P, FUNVEC_COMPILED_P): Remove.
      (COMPILEDP): Rename back from FUNVECP.
      * src/fns.c (Felt): Remove unexplained FUNVEC check.
      * src/doc.c (Fdocumentation): Don't handle funvec.
      * src/alloc.c (make_funvec, Ffunvec): Remove.
      * doc/lispref/vol2.texi (Top):
      * doc/lispref/vol1.texi (Top):
      * doc/lispref/objects.texi (Programming Types, Funvec Type, Type Predicates):
      * doc/lispref/functions.texi (Functions, What Is a Function, FunctionCurrying):
      * doc/lispref/elisp.texi (Top): Remove mentions of funvec and curry.
      876c194c
  23. 23 Feb, 2011 1 commit
  24. 21 Feb, 2011 1 commit
    • Stefan Monnier's avatar
      Use offsets relative to top rather than bottom for stack refs · 3e21b6a7
      Stefan Monnier authored
      * lisp/emacs-lisp/byte-opt.el (byte-compile-side-effect-and-error-free-ops):
      Remove interactive-p.
      (byte-optimize-lapcode): Update optimizations now that stack-refs are
      relative to the top rather than to the bottom.
      * lisp/emacs-lisp/bytecomp.el (byte-compile-lapcode):
      Turn stack-ref-0 into dup.
      (byte-compile-form): Don't indirect-function since it can signal
      errors.
      (byte-compile-stack-ref, byte-compile-stack-set): Adjust to stack-refs
      being relative to top rather than to bottom in the byte-code.
      (with-output-to-temp-buffer): Remove.
      (byte-compile-with-output-to-temp-buffer): Remove.
      * lisp/emacs-lisp/cconv.el: Use lexical-binding.
      (cconv--lookup-let): Rename from cconv-lookup-let.
      (cconv-closure-convert-rec): Fix handling of captured+mutated
      arguments in defun/defmacro.
      * lisp/emacs-lisp/eieio-comp.el (eieio-byte-compile-file-form-defmethod):
      Rename from byte-compile-file-form-defmethod.
      Don't byte-compile-lambda.
      (eieio-byte-compile-defmethod-param-convert): Rename from
      byte-compile-defmethod-param-convert.
      * lisp/emacs-lisp/eieio.el (eieio-defgeneric-form-primary-only-one):
      Call byte-compile rather than byte-compile-lambda.
      * src/alloc.c (Fgarbage_collect): Don't mark the byte-stack redundantly.
      * src/bytecode.c (exec_byte_code): Change stack_ref and stack_set to use
      offsets relative to top rather than to bottom.
      * lisp/subr.el (with-output-to-temp-buffer): New macro.
      * lisp/simple.el (count-words-region): Don't use interactive-p.
      3e21b6a7
  25. 16 Feb, 2011 1 commit
    • Tom Tromey's avatar
      Change B_ to BVAR · 4b4deea2
      Tom Tromey authored
      	* xfns.c (x_create_tip_frame, Fx_show_tip): Replace B_ with BVAR.
      	* xfaces.c (compute_char_face): Replace B_ with BVAR.
      	* xdisp.c (pos_visible_p, init_iterator, reseat_1)
      	(message_dolog, update_echo_area, ensure_echo_area_buffers)
      	(with_echo_area_buffer, setup_echo_area_for_printing)
      	(set_message_1, update_menu_bar, update_tool_bar)
      	(text_outside_line_unchanged_p, redisplay_internal)
      	(try_scrolling, try_cursor_movement, redisplay_window)
      	(try_window_reusing_current_matrix, row_containing_pos)
      	(try_window_id, get_overlay_arrow_glyph_row, display_line)
      	(Fcurrent_bidi_paragraph_direction, display_mode_lines)
      	(decode_mode_spec_coding, decode_mode_spec, display_count_lines)
      	(get_window_cursor_type, note_mouse_highlight): Replace B_ with
      	BVAR.
      	* window.c (window_display_table, unshow_buffer, window_loop)
      	(window_min_size_2, set_window_buffer, Fset_window_buffer)
      	(select_window, Fforce_window_update, temp_output_buffer_show)
      	(Fset_window_configuration, save_window_save): Replace B_ with
      	BVAR.
      	* w32fns.c (x_create_tip_frame, Fx_show_tip, Fw32_shell_execute):
      	Replace B_ with BVAR.
      	* undo.c (record_point, record_insert, record_delete)
      	(record_marker_adjustment, record_first_change)
      	(record_property_change, Fundo_boundary, truncate_undo_list)
      	(Fprimitive_undo): Replace B_ with BVAR.
      	* syntax.h (Vstandard_syntax_table, CURRENT_SYNTAX_TABLE)
      	(SETUP_BUFFER_SYNTAX_TABLE): Replace B_ with BVAR.
      	* syntax.c (update_syntax_table, dec_bytepos, Fsyntax_table)
      	(Fset_syntax_table, Fmodify_syntax_entry, skip_chars)
      	(skip_syntaxes, scan_lists): Replace B_ with BVAR.
      	* search.c (compile_pattern_1, compile_pattern, looking_at_1)
      	(string_match_1, fast_looking_at, newline_cache_on_off)
      	(search_command, search_buffer, simple_search, boyer_moore)
      	(Freplace_match): Replace B_ with BVAR.
      	* process.c (get_process, list_processes_1, Fstart_process)
      	(Fmake_serial_process, Fmake_network_process)
      	(read_process_output, send_process, exec_sentinel)
      	(status_notify, setup_process_coding_systems): Replace B_ with
      	BVAR.
      	* print.c (PRINTDECLARE, PRINTPREPARE, PRINTFINISH, printchar)
      	(strout, print_string, temp_output_buffer_setup, print_object):
      	Replace B_ with BVAR.
      	* msdos.c (IT_frame_up_to_date): Replace B_ with BVAR.
      	* minibuf.c (read_minibuf, get_minibuffer, Fread_buffer): Replace
      	B_ with BVAR.
      	* marker.c (Fmarker_buffer, Fset_marker, set_marker_restricted)
      	(set_marker_both, set_marker_restricted_both, unchain_marker):
      	Replace B_ with BVAR.
      	* lread.c (readchar, unreadchar, openp, readevalloop)
      	(Feval_buffer, Feval_region): Replace B_ with BVAR.
      	* lisp.h (DOWNCASE_TABLE, UPCASE_TABLE): Replace B_ with BVAR.
      	* keymap.c (Flocal_key_binding, Fuse_local_map)
      	(Fcurrent_local_map, push_key_description)
      	(Fdescribe_buffer_bindings): Replace B_ with BVAR.
      	* keyboard.c (command_loop_1, read_char_minibuf_menu_prompt)
      	(read_key_sequence): Replace B_ with BVAR.
      	* intervals.h (TEXT_PROP_MEANS_INVISIBLE): Replace B_ with BVAR.
      	* intervals.c (set_point_both, get_local_map): Replace B_ with
      	BVAR.
      	* insdel.c (check_markers, insert_char, insert_1_both)
      	(insert_from_string_1, insert_from_gap, insert_from_buffer_1)
      	(adjust_after_replace, replace_range, del_range_2)
      	(modify_region, prepare_to_modify_buffer)
      	(Fcombine_after_change_execute): Replace B_ with BVAR.
      	* indent.c (buffer_display_table, recompute_width_table)
      	(width_run_cache_on_off, current_column, scan_for_column)
      	(Findent_to, position_indentation, compute_motion, vmotion):
      	Replace B_ with BVAR.
      	* fringe.c (get_logical_cursor_bitmap)
      	(get_logical_fringe_bitmap, update_window_fringes): Replace B_
      	with BVAR.
      	* frame.c (make_frame_visible_1): Replace B_ with BVAR.
      	* font.c (font_at): Replace B_ with BVAR.
      	* fns.c (Fbase64_encode_region, Fbase64_decode_region, Fmd5):
      	Replace B_ with BVAR.
      	* filelock.c (unlock_all_files, Flock_buffer, Funlock_buffer)
      	(unlock_buffer): Replace B_ with BVAR.
      	* fileio.c (Fexpand_file_name, Ffile_directory_p)
      	(Ffile_regular_p, Ffile_selinux_context)
      	(Fset_file_selinux_context, Ffile_modes, Fset_file_modes)
      	(Fset_file_times, Ffile_newer_than_file_p, decide_coding_unwind)
      	(Finsert_file_contents, choose_write_coding_system)
      	(Fwrite_region, build_annotations, Fverify_visited_file_modtime)
      	(Fset_visited_file_modtime, auto_save_error, auto_save_1)
      	(Fdo_auto_save, Fset_buffer_auto_saved): Replace B_ with BVAR.
      	* editfns.c (region_limit, Fmark_marker, save_excursion_save)
      	(save_excursion_restore, Fprevious_char, Fchar_before)
      	(general_insert_function, Finsert_char, Finsert_byte)
      	(make_buffer_string_both, Finsert_buffer_substring)
      	(Fcompare_buffer_substrings, subst_char_in_region_unwind)
      	(subst_char_in_region_unwind_1, Fsubst_char_in_region)
      	(Ftranslate_region_internal, save_restriction_restore)
      	(Fchar_equal): Replace B_ with BVAR.
      	* dispnew.c (Fframe_or_buffer_changed_p): Replace B_ with BVAR.
      	* dispextern.h (WINDOW_WANTS_MODELINE_P)
      	(WINDOW_WANTS_HEADER_LINE_P): Replace B_ with BVAR.
      	* dired.c (directory_files_internal): Replace B_ with BVAR.
      	* data.c (swap_in_symval_forwarding, set_internal)
      	(Fmake_local_variable, Fkill_local_variable, Flocal_variable_p):
      	Replace B_ with BVAR.
      	* composite.c (fill_gstring_header)
      	(composition_compute_stop_pos, composition_adjust_point)
      	(Ffind_composition_internal): Replace B_ with BVAR.
      	* coding.c (decode_coding, encode_coding)
      	(make_conversion_work_buffer, decode_coding_gap)
      	(decode_coding_object, encode_coding_object)
      	(Fdetect_coding_region, Ffind_coding_systems_region_internal)
      	(Funencodable_char_position, Fcheck_coding_systems_region):
      	Replace B_ with BVAR.
      	* cmds.c (Fself_insert_command, internal_self_insert): Replace B_
      	with BVAR.
      	* charset.c (Ffind_charset_region): Replace B_ with BVAR.
      	* character.h (FETCH_CHAR_ADVANCE, INC_BOTH, DEC_BOTH)
      	(ASCII_CHAR_WIDTH): Replace B_ with BVAR.
      	* character.c (chars_in_text, Fget_byte): Replace B_ with BVAR.
      	* category.h (Vstandard_category_table): Replace B_ with BVAR.
      	* category.c (check_category_table, Fcategory_table)
      	(Fset_category_table, char_category_set): Replace B_ with BVAR.
      	* casetab.c (Fcurrent_case_table, set_case_table): Replace B_ with
      	BVAR.
      	* casefiddle.c (casify_object, casify_region): Replace B_ with
      	BVAR.
      	* callproc.c (Fcall_process, Fcall_process_region): Replace B_
      	with BVAR.
      	* callint.c (check_mark, Fcall_interactively): Replace B_ with
      	BVAR.
      	* bytecode.c (Fbyte_code): Replace B_ with BVAR.
      	* buffer.h (FETCH_CHAR, FETCH_CHAR_AS_MULTIBYTE, BVAR): Replace B_
      	with BVAR.
      	* buffer.c (Fbuffer_live_p, Fget_file_buffer)
      	(get_truename_buffer, Fget_buffer_create)
      	(clone_per_buffer_values, Fmake_indirect_buffer, reset_buffer)
      	(reset_buffer_local_variables, Fbuffer_name, Fbuffer_file_name)
      	(Fbuffer_local_value, buffer_lisp_local_variables)
      	(Fset_buffer_modified_p, Frestore_buffer_modified_p)
      	(Frename_buffer, Fother_buffer, Fbuffer_enable_undo)
      	(Fkill_buffer, Fset_buffer_major_mode, set_buffer_internal_1)
      	(set_buffer_temp, Fset_buffer, set_buffer_if_live)
      	(Fbarf_if_buffer_read_only, Fbury_buffer, Ferase_buffer)
      	(Fbuffer_swap_text, swapfield_, Fbuffer_swap_text)
      	(Fset_buffer_multibyte, swap_out_buffer_local_variables)
      	(record_overlay_string, overlay_strings, init_buffer_once)
      	(init_buffer, syms_of_buffer): Replace B_ with BVAR.
      4b4deea2
  26. 14 Feb, 2011 2 commits
    • Michael Welsh Duggan's avatar
      Fix use of dtoastr from gnulib. · 75b43359
      Michael Welsh Duggan authored
      * src/print.c (float_to_string): Ensure that a decimal point is
      printed if using dtoastr (Bug#8033).
      75b43359
    • Tom Tromey's avatar
      Hide implementation of `struct buffer' · 5d8ea120
      Tom Tromey authored
      	* composite.c (fill_gstring_header)
      	(composition_compute_stop_pos, composition_adjust_point)
      	(Ffind_composition_internal): Use B_.
      	* intervals.c (set_point_both, get_local_map): Use B_.
      	* callproc.c (Fcall_process, Fcall_process_region): Use B_.
      	* process.c (get_process, list_processes_1, Fstart_process)
      	(Fmake_serial_process, Fmake_network_process)
      	(read_process_output, send_process, exec_sentinel)
      	(status_notify, setup_process_coding_systems): Use B_.
      	* bytecode.c (Fbyte_code): Use B_.
      	* syntax.c (update_syntax_table, dec_bytepos, Fsyntax_table)
      	(Fset_syntax_table, Fmodify_syntax_entry, skip_chars)
      	(skip_syntaxes, scan_lists): Use B_.
      	* lread.c (readchar, unreadchar, openp, readevalloop)
      	(Feval_buffer, Feval_region): Use B_.
      	* print.c (printchar, strout, print_string, PRINTDECLARE)
      	(PRINTPREPARE, PRINTFINISH, temp_output_buffer_setup)
      	(print_object): Use B_.
      	* font.c (font_at): Use B_.
      	* fns.c (Fbase64_encode_region, Fbase64_decode_region, Fmd5): Use
      	B_.
      	* callint.c (check_mark, Fcall_interactively): Use B_.
      	* editfns.c (region_limit, Fmark_marker, save_excursion_save)
      	(save_excursion_restore, Fprevious_char, Fchar_before)
      	(general_insert_function, Finsert_char, Finsert_byte)
      	(make_buffer_string_both, Finsert_buffer_substring)
      	(Fcompare_buffer_substrings, subst_char_in_region_unwind)
      	(subst_char_in_region_unwind_1, Fsubst_char_in_region)
      	(Ftranslate_region_internal, save_restriction_restore)
      	(Fchar_equal): Use B_.
      	* data.c (swap_in_symval_forwarding, set_internal)
      	(Fmake_local_variable, Fkill_local_variable, Flocal_variable_p):
      	Use B_.
      	* undo.c (record_point, record_insert, record_delete)
      	(record_marker_adjustment, record_first_change)
      	(record_property_change, Fundo_boundary, truncate_undo_list)
      	(Fprimitive_undo): Use B_.
      	* search.c (compile_pattern_1, compile_pattern, looking_at_1)
      	(string_match_1, fast_looking_at, newline_cache_on_off)
      	(search_command, search_buffer, simple_search, boyer_moore)
      	(Freplace_match): Use B_.
      	* indent.c (buffer_display_table, recompute_width_table)
      	(width_run_cache_on_off, current_column, scan_for_column)
      	(Findent_to, position_indentation, compute_motion, vmotion): Use
      	B_.
      	* casefiddle.c (casify_object, casify_region): Use B_.
      	* casetab.c (Fcurrent_case_table, set_case_table): Use B_.
      	* cmds.c (Fself_insert_command, internal_self_insert): Use B_.
      	* fileio.c (Fexpand_file_name, Ffile_directory_p)
      	(Ffile_regular_p, Ffile_selinux_context)
      	(Fset_file_selinux_context, Ffile_modes, Fset_file_modes)
      	(Fset_file_times, Ffile_newer_than_file_p, decide_coding_unwind)
      	(Finsert_file_contents, choose_write_coding_system)
      	(Fwrite_region, build_annotations, Fverify_visited_file_modtime)
      	(Fset_visited_file_modtime, auto_save_error, auto_save_1)
      	(Fdo_auto_save, Fset_buffer_auto_saved): Use B_.
      	* minibuf.c (read_minibuf, get_minibuffer, Fread_buffer): Use B_.
      	* marker.c (Fmarker_buffer, Fset_marker, set_marker_restricted)
      	(set_marker_both, set_marker_restricted_both, unchain_marker): Use
      	B_.
      	* insdel.c (check_markers, insert_char, insert_1_both)
      	(insert_from_string_1, insert_from_gap, insert_from_buffer_1)
      	(adjust_after_replace, replace_range, del_range_2)
      	(modify_region, prepare_to_modify_buffer)
      	(Fcombine_after_change_execute): Use B_.
      	* filelock.c (unlock_all_files, Flock_buffer, Funlock_buffer)
      	(unlock_buffer): Use B_.
      	* keymap.c (Flocal_key_binding, Fuse_local_map)
      	(Fcurrent_local_map, push_key_description)
      	(Fdescribe_buffer_bindings): Use B_.
      	* keyboard.c (command_loop_1, read_char_minibuf_menu_prompt)
      	(read_key_sequence): Use B_.
      	* fringe.c (get_logical_cursor_bitmap)
      	(get_logical_fringe_bitmap, update_window_fringes): Use B_.
      	* xfns.c (x_create_tip_frame, Fx_show_tip): Use B_.
      	* xfaces.c (compute_char_face): Use B_.
      	* character.c (chars_in_text, Fget_byte): Use B_.
      	* category.c (check_category_table, Fcategory_table)
      	(Fset_category_table, char_category_set): Use B_.
      	* coding.c (decode_coding, encode_coding)
      	(make_conversion_work_buffer, decode_coding_gap)
      	(decode_coding_object, encode_coding_object)
      	(Fdetect_coding_region, Ffind_coding_systems_region_internal)
      	(Funencodable_char_position, Fcheck_coding_systems_region): Use
      	B_.
      	* charset.c (Ffind_charset_region): Use B_.
      	* window.c (window_display_table, unshow_buffer, window_loop)
      	(window_min_size_2, set_window_buffer, Fset_window_buffer)
      	(select_window, Fforce_window_update, temp_output_buffer_show)
      	(Fset_window_configuration, save_window_save): Use B_.
      	* xdisp.c (pos_visible_p, init_iterator, reseat_1)
      	(message_dolog, update_echo_area, ensure_echo_area_buffers)
      	(with_echo_area_buffer, setup_echo_area_for_printing)
      	(set_message_1, update_menu_bar, update_tool_bar)
      	(text_outside_line_unchanged_p, redisplay_internal)
      	(try_scrolling, try_cursor_movement, redisplay_window)
      	(try_window_reusing_current_matrix, row_containing_pos)
      	(try_window_id, get_overlay_arrow_glyph_row, display_line)
      	(Fcurrent_bidi_paragraph_direction, display_mode_lines)
      	(decode_mode_spec_coding, decode_mode_spec, display_count_lines)
      	(get_window_cursor_type, note_mouse_highlight): Use B_.
      	* frame.c (make_frame_visible_1): Use B_.
      	* dispnew.c (Fframe_or_buffer_changed_p): Use B_.
      	* dispextern.h (WINDOW_WANTS_HEADER_LINE_P)
      	(WINDOW_WANTS_MODELINE_P): Use B_.
      	* syntax.h (Vstandard_syntax_table): Update.
      	(CURRENT_SYNTAX_TABLE, SETUP_BUFFER_SYNTAX_TABLE): Use B_.
      	* intervals.h (TEXT_PROP_MEANS_INVISIBLE): Update.
      	(TEXT_PROP_MEANS_INVISIBLE): Use B_.
      	* character.h (FETCH_CHAR_ADVANCE): Update.
      	(INC_BOTH, ASCII_CHAR_WIDTH, DEC_BOTH): Use B_.
      	* category.h (Vstandard_category_table): Update.
      	* lisp.h (DEFVAR_BUFFER_DEFAULTS): Update for change to field
      	names.
      	(DOWNCASE_TABLE, UPCASE_TABLE): Use B_.
      	* buffer.c (swapfield_): New macro.
      	(Fbuffer_swap_text): Use swapfield_ where appropriate.
      	(Fbuffer_live_p, Fget_file_buffer, get_truename_buffer)
      	(Fget_buffer_create, clone_per_buffer_values)
      	(Fmake_indirect_buffer, reset_buffer)
      	(reset_buffer_local_variables, Fbuffer_name, Fbuffer_file_name)
      	(Fbuffer_local_value, buffer_lisp_local_variables)
      	(Fset_buffer_modified_p, Frestore_buffer_modified_p)
      	(Frename_buffer, Fother_buffer, Fbuffer_enable_undo)
      	(Fkill_buffer, Fset_buffer_major_mode, set_buffer_internal_1)
      	(set_buffer_temp, Fset_buffer, set_buffer_if_live)
      	(Fbarf_if_buffer_read_only, Fbury_buffer, Ferase_buffer)
      	(Fbuffer_swap_text, Fset_buffer_multibyte)
      	(swap_out_buffer_local_variables, record_overlay_string)
      	(overlay_strings, init_buffer_once, init_buffer, syms_of_buffer):
      	Use B_.
      	* buffer.h (struct buffer): Rename all Lisp_Object fields.
      	(BUFFER_INTERNAL_FIELD, B_): New macro.
      	(FETCH_CHAR, FETCH_CHAR_AS_MULTIBYTE): Use B_.
      5d8ea120
  27. 07 Feb, 2011 2 commits
  28. 06 Feb, 2011 1 commit
  29. 30 Jan, 2011 1 commit
    • Paul Eggert's avatar
      Use SSDATA when the context wants char *. · 42a5b22f
      Paul Eggert authored
      * alloc.c, buffer.c, bytecode.c, callproc.c, dired.c:
      * dispnew.c, doc.c, editfns.c, emacs.c, fileio.c, filelock.c:
      * fns.c, font.c, frame.c, image.c, indent.c, keyboard.c:
      * lread.c, minibuf.c, print.c, process.c, search.c, widget.c:
      * xdisp.c, xfaces.c, xfns.c, xml.c, xselect.c, xterm.c:
      Use SSDATA (not SDATA) when the context of the expression wants
      char * (not unsigned char *).
      42a5b22f