1. 09 Oct, 2013 2 commits
    • Eli Zaretskii's avatar
      Fix bug #15565 with assertion violations in x_free_gc. · 051277bf
      Eli Zaretskii authored
       src/xfaces.c (x_free_gc) [HAVE_X_WINDOWS, HAVE_NTGUI]: Don't pass
       expressions with side effects to eassert.
    • Stefan Monnier's avatar
      * lisp/profiler.el: Create a more coherent calltree from partial backtraces. · 79804536
      Stefan Monnier authored
      (profiler-format): Hide the tail with `invisible' so that C-s can still
      find the hidden elements.
      (profiler-calltree-depth): Don't recurse so enthusiastically.
      (profiler-function-equal): New hash-table-test.
      (profiler-calltree-build-unified): New function.
      (profiler-calltree-build): Use it.
      (profiler-report-make-name-part): Indent the calltree less.
      (profiler-report-mode): Add visibility specs for profiler-format.
      (profiler-report-expand-entry, profiler-report-toggle-entry):
      Expand the whole subtree when provided with a prefix arg.
      * src/fns.c (hashfn_user_defined): Allow hash functions to return any
  2. 08 Oct, 2013 11 commits
  3. 07 Oct, 2013 7 commits
    • Paul Eggert's avatar
      Improve support for popcount and counting trailing zeros. · 595e113b
      Paul Eggert authored
      Do this by using the Gnulib modules for this.
      This should generate faster code on non-GCC, non-MSC platforms,
      and make the code a bit more portable, at least in theory.
      * admin/merge-gnulib (GNULIB_MODULES): Add count-one-bits
      and count-trailing-zeros.
      * lib/count-one-bits.c, lib/count-one-bits.h:
      * lib/count-trailing-zeros.c, lib/count-trailing-zeros.h:
      * m4/count-one-bits.m4, m4/count-trailing-zeros.m4:
      New files, copied from gnulib.
      * lib/gnulib.mk, m4/gnulib-comp.m4: Regenerate.
      * nt/gnulib.mk: Merge changes from lib/gnulib.mk.
      * src/data.c: Include <count-one-bits.h>, <count-trailing-zeros.h>.
      (NEED_GENERIC_POPCOUNT, popcount_size_t_generic)
      (popcount_size_t_msc, popcount_size_t_gcc):
      Remove; now done by Gnulib.
      (popcount_size_t): Now a macro that defers to Gnulib.
      (count_trailing_zero_bits): Return int, for consistency with
      Gnulib and because Emacs prefers signed to unsigned int.
      Don't assume that size_t is either unsigned int or unsigned long
      or unsigned long long.
      (size_t_to_host_endian): Do not assume that size_t is either
      exactly 32 or exactly 64 bits wide.
      * src/lisp.h (BITS_PER_SIZE_T): Define consistently with BITS_PER_LONG
      etc., so that it's now an enum constant, not a macro.
      No need to assume that it's either 32 or 64.
      Fixes: debbugs:15550
    • Jan Djärv's avatar
    • Dmitry Antipov's avatar
      * xdisp.c (handle_fontified_prop): Prefer ptrdiff_t to int where needed. · 764636db
      Dmitry Antipov authored
      Use bool for boolean.
    • Dmitry Antipov's avatar
    • Dmitry Antipov's avatar
    • Paul Eggert's avatar
      emacs_read and emacs_write now use void *, not char *. · 223752d7
      Paul Eggert authored
      * alloc.c (valid_pointer_p) [!WINDOWSNT]: Remove now-unnecessary cast.
      * sysdep.c (emacs_read, emacs_write, emacs_write_sig):
      Buffer arg is now void *, not char *.  This matches plain
      'read' and 'write' better, and avoids a constraint violation
      on Solaris 9 with Oracle Studio.
    • Dmitry Antipov's avatar
      * alloc.c (Fmake_string): For ASCII char initializer, prefer · 3c439e0a
      Dmitry Antipov authored
      memset to explicit loop.  Otherwise copy largest possible chunk
      from initialized to uninitialized part, thus allowing the longer
      memcpy runs and reducing the number of loop iterations.
  4. 06 Oct, 2013 2 commits
  5. 05 Oct, 2013 5 commits
  6. 04 Oct, 2013 3 commits
  7. 03 Oct, 2013 7 commits
    • Eli Zaretskii's avatar
    • Paul Eggert's avatar
      * lisp.h (eassert): Assume that COND is true when optimizing. · 75273afb
      Paul Eggert authored
      In other words, take on the behavior of eassert_and_assume.
      This makes Emacs 0.2% smaller on my platform (Fedora 19, x86-64).
      (eassert_and_assume): Remove.  All uses replaced by eassert.
    • Paul Eggert's avatar
      * xdisp.c (Qglyphless_char): Now static. · ead45345
      Paul Eggert authored
    • Paul Eggert's avatar
      Merge from gnulib. · 0a858ebf
      Paul Eggert authored
      * src/conf_post.h (__has_builtin, assume): Remove; gnulib now does these.
      * src/lisp.h: Include <verify.h>, for 'assume'.
      This also incorpoprates:
      2013-10-02 verify: new macro 'assume'
      2013-09-26 dup2, dup3: work around another cygwin crasher
      2013-09-26 getdtablesize: work around cygwin issue
    • Paul Eggert's avatar
      * eval.c (clobbered_eassert): New macro. · b52f569d
      Paul Eggert authored
      (internal_catch, internal_condition_case)
      (internal_condition_case_1, internal_condition_case_2)
      (internal_condition_case_n): Use it instead of eassert
      when the argument contains locals clobbered by longjmp.
      Don't use clobbered locals outside of clobbered_eassert.
      (internal_lisp_condition_case): Use a volatile variable
      to work around a local variable's getting clobbered.
    • Stefan Monnier's avatar
      Introduce new bytecodes for efficient catch/condition-case in lexbind. · adf2aa61
      Stefan Monnier authored
      * lisp/emacs-lisp/byte-opt.el (byte-optimize-form-code-walker):
      Optimize under `condition-case' and `catch' if
      byte-compile--use-old-handlers is nil.
      (disassemble-offset): Handle new bytecodes.
      * lisp/emacs-lisp/bytecomp.el (byte-pushcatch, byte-pushconditioncase)
      (byte-pophandler): New byte codes.
      (byte-goto-ops): Adjust accordingly.
      (byte-compile--use-old-handlers): New var.
      (byte-compile-catch): Use new byte codes depending on
      (byte-compile-condition-case--old): Rename from
      (byte-compile-condition-case--new): New function.
      (byte-compile-condition-case): New function that dispatches depending
      on byte-compile--use-old-handlers.
      (byte-compile-unwind-protect): Pass a function to byte-unwind-protect
      when we can.
      * lisp/emacs-lisp/cconv.el (cconv-convert, cconv-analyse-form): Adjust for
      the new compilation scheme using the new byte-codes.
      * src/alloc.c (Fgarbage_collect): Merge scans of handlerlist and catchlist,
      and make them unconditional now that they're heap-allocated.
      * src/bytecode.c (BYTE_CODES): Add Bpushcatch, Bpushconditioncase
      and Bpophandler.
      (bcall0): New function.
      (exec_byte_code): Add corresponding cases.  Improve error message when
      encountering an invalid byte-code.  Let Bunwind_protect accept
      a function (rather than a list of expressions) as argument.
      * src/eval.c (catchlist): Remove (merge with handlerlist).
      (handlerlist, lisp_eval_depth): Not static any more.
      (internal_catch, internal_condition_case, internal_condition_case_1)
      (internal_condition_case_2, internal_condition_case_n):
      (unwind_to_catch, Fthrow, Fsignal): Adjust to merged
      (internal_lisp_condition_case): Use PUSH_HANDLER.  Adjust to new
      handlerlist which can only handle a single condition-case handler at
      a time.
      (find_handler_clause): Simplify since we only a single branch here
      any more.
      * src/lisp.h (struct handler): Merge struct handler and struct catchtag.
      (PUSH_HANDLER): New macro.
      (catchlist): Remove.
      (handlerlist): Always declare.
    • Stefan Monnier's avatar
      * lisp/subr.el (decode-char, encode-char): Use advertised-calling-convention · 328a8179
      Stefan Monnier authored
      instead of the docstring to discourage use of the `restriction' arg.
      (error): Use `declare'.
      * src/charset.c (Fdecode_char, Fencode_char): Remove description of
      `restriction' arg. now that it's hidden by advertised-calling-convention.
  8. 02 Oct, 2013 3 commits