1. 11 Jan, 2012 1 commit
  2. 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
  3. 02 Jan, 2011 1 commit
  4. 30 Jul, 2010 1 commit
  5. 03 Jun, 2010 1 commit
  6. 13 Jan, 2010 1 commit
  7. 21 Nov, 2009 1 commit
  8. 11 Nov, 2009 1 commit
    • Dan Nicolaescu's avatar
      * process.c (ifflag_def): Make flag_sym constant. · 91433552
      Dan Nicolaescu authored
      (Fnetwork_interface_info): Use a constant pointer.
      (ifflag_table):
      * xfns.c (cursor_bits):
      * xdisp.c (power_letter):
      * termcap.c (speeds, esctab):
      * sysdep.c (baud_convert):
      * keyboard.c (lispy_accent_codes, modifier_names):
      * image.c (xbm_format, xpm_format, pbm_format, png_format)
      (jpeg_format, tiff_format, gif_format, svg_format)
      (interlace_start, interlace_increment, gs_format):
      * gtkutil.c (separator_names):
      * fringe.c (swap_nibble):
      * fns.c (base64_value_to_char, base64_char_to_value):
      * fileio.c (make_temp_name_tbl):
      * coding.c (suffixes): Make constant.
      91433552
  9. 10 Nov, 2009 1 commit
  10. 06 Nov, 2009 2 commits
    • Stefan Monnier's avatar
      Let integers use up 2 tags to give them one extra bit and double their range. · 2de9f71c
      Stefan Monnier authored
      * lisp.h (USE_2_TAGS_FOR_INTS): New macro.
      (LISP_INT_TAG, case_Lisp_Int, LISP_STRING_TAG, LISP_INT_TAG_P): New macros.
      (enum Lisp_Type): Use them.  Give explicit values.
      (Lisp_Type_Limit): Remove.
      (XINT, XUINT, make_number) [!USE_LISP_UNION_TYPE]:
      (MOST_NEGATIVE_FIXNUM, MOST_POSITIVE_FIXNUM, INTMASK):
      Pay attention to USE_2_TAGS_FOR_INTS.
      (INTEGERP): Use LISP_INT_TAG_P.
      * fns.c (internal_equal): Simplify the default case.
      (sxhash): Use case_Lisp_Int.
      * data.c (wrong_type_argument): Don't check against Lisp_Type_Limit any more.
      (Ftype_of): Use case_Lisp_Int.
      (store_symval_forwarding): Take into account the fact that Ints can
      now have more than one tag.
      * buffer.c (syms_of_buffer): Use LISP_INT_TAG.
      buffer_slot_type_mismatch):
      * xfaces.c (face_attr_equal_p):
      * print.c (print_object):
      * alloc.c (mark_maybe_object, mark_object, survives_gc_p): Use case_Lisp_Int.
      2de9f71c
    • Dan Nicolaescu's avatar
      * xterm.c (syms_of_xterm): · d67b4f80
      Dan Nicolaescu authored
      * xselect.c (syms_of_xselect):
      * xmenu.c (syms_of_xmenu):
      * xfns.c (syms_of_xfns):
      * xfaces.c (syms_of_xfaces):
      * xdisp.c (syms_of_xdisp):
      * window.c (syms_of_window):
      * w32fns.c (syms_of_w32fns):
      * undo.c (syms_of_undo):
      * textprop.c (syms_of_textprop):
      * terminal.c (syms_of_terminal):
      * syntax.c (syms_of_syntax):
      * sound.c (syms_of_sound):
      * search.c (syms_of_search):
      * print.c (syms_of_print):
      * minibuf.c (syms_of_minibuf):
      * macros.c (syms_of_macros):
      * keymap.c (syms_of_keymap, initial_define_key)
      (initial_define_lispy_key):
      * keyboard.c (syms_of_keyboard):
      * insdel.c (syms_of_insdel):
      * image.c (syms_of_image):
      * fringe.c (syms_of_fringe):
      * frame.c (syms_of_frame):
      * fontset.c (syms_of_fontset):
      * fns.c (syms_of_fns):
      * fns.c (syms_of_fns):
      * fileio.c (syms_of_fileio):
      * fileio.c (syms_of_fileio):
      * eval.c (syms_of_eval):
      * doc.c (syms_of_doc):
      * dispnew.c (syms_of_display):
      * dired.c (syms_of_dired):
      * dbusbind.c (syms_of_dbusbind):
      * data.c (syms_of_data):
      * composite.c (syms_of_composite):
      * coding.c (syms_of_coding):
      * cmds.c (syms_of_cmds):
      * charset.c (define_charset_internal, syms_of_character):
      * ccl.c (syms_of_ccl):
      * category.c (syms_of_category, init_category_once):
      * casetab.c (syms_of_casetab):
      * casefiddle.c (syms_of_casefiddle):
      * callint.c (syms_of_callint):
      * bytecode.c (syms_of_bytecode):
      * buffer.c (keys_of_buffer, syms_of_buffer):
      * alloc.c (syms_of_alloc):
      * process.c (syms_of_process, init_process):
      * lread.c (syms_of_lread, init_obarray):
      * font.c (build_style_table):
      * emacs.c (syms_of_emacs, main): Replace calls to intern with
      intern_c_string, calls to make_pure_string with
      make_pure_c_string.  Use pure_cons instead of Fcons.
      
      * process.c (socket_options): Make it const.
      (set_socket_option, init_process): Use a const pointer.
      
      * lread.c (intern_c_string): New function.
      (defvar_kboard, defvar_lisp, defvar_lisp_nopro, defvar_bool)
      (defvar_int): Uset it.  Make the name const char*.
      
      * font.c (struct table_entry): Remove unused member.  Make NAMES
      constant.
      (weight_table, slant_table, width_table): Make constant.
      
      * emacs.c (struct standard_args): Make name and longname constant.
      d67b4f80
  11. 20 Oct, 2009 1 commit
  12. 19 Oct, 2009 2 commits
    • Dan Nicolaescu's avatar
      * fns.c: Remove code for unsupported system: MAC_OS. · c3417a74
      Dan Nicolaescu authored
      * image.c: Likewise.  Include setjmp.h.
      c3417a74
    • Dan Nicolaescu's avatar
      * alloc.c: Do not define struct catchtag. · d7306fe6
      Dan Nicolaescu authored
      * eval.c: Move struct catchtag definition ...
      * lisp.h: ... here.
      
      * image.c: Move png.h #include earlier to avoid warnings.
      
      * xterm.c:
      * xsmfns.c:
      * xselect.c:
      * xrdb.c:
      * xmenu.c:
      * xftfont.c:
      * xfont.c:
      * xfns.c:
      * xfaces.c:
      * xdisp.c:
      * window.c:
      * widget.c:
      * w32xfns.c:
      * w32uniscribe.c:
      * w32term.c:
      * w32select.c:
      * w32reg.c:
      * w32proc.c:
      * w32menu.c:
      * w32inevt.c:
      * w32heap.c:
      * w32font.c:
      * w32fns.c:
      * w32console.c:
      * w32.c:
      * w16select.c:
      * vm-limit.c:
      * unexsol.c:
      * unexec.c:
      * unexcw.c:
      * unexaix.c:
      * undo.c:
      * tparam.c:
      * textprop.c:
      * terminfo.c:
      * terminal.c:
      * termcap.c:
      * term.c:
      * syntax.c:
      * sound.c:
      * sheap.c:
      * search.c:
      * scroll.c:
      * region-cache.c:
      * regex.c:
      * ralloc.c:
      * process.c:
      * print.c:
      * msdos.c:
      * minibuf.c:
      * menu.c:
      * marker.c:
      * macros.c:
      * keymap.c:
      * keyboard.c:
      * intervals.c:
      * insdel.c:
      * indent.c:
      * gtkutil.c:
      * ftxfont.c:
      * ftfont.c:
      * fringe.c:
      * frame.c:
      * fontset.c:
      * font.c:
      * fns.c:
      * floatfns.c:
      * filelock.c:
      * fileio.c:
      * emacs.c:
      * editfns.c:
      * dosfns.c:
      * doprnt.c:
      * doc.c:
      * dispnew.c:
      * dired.c:
      * dbusbind.c:
      * data.c:
      * composite.c:
      * coding.c:
      * cmds.c:
      * cm.c:
      * chartab.c:
      * charset.c:
      * character.c:
      * ccl.c:
      * category.c:
      * casetab.c:
      * casefiddle.c:
      * callproc.c:
      * callint.c:
      * bytecode.c:
      * buffer.c:
      * atimer.c: Include setjmp.h.  (Bug#4643)
      
      * xlwmenu.c:
      * lwlib.c:
      * lwlib-utils.c:
      * lwlib-Xm.c:
      * lwlib-Xlw.c:
      * lwlib-Xaw.c: Include setjmp.h.
      d7306fe6
  13. 18 Oct, 2009 1 commit
    • Stefan Monnier's avatar
      Remove leftover table unibyte_to_multibyte_table. · 4c0354d7
      Stefan Monnier authored
      * character.c (unibyte_to_multibyte_table): Remove.
      (Funibyte_char_to_multibyte): Use MAKE_CHAR_MULTIBYTE.
      * charset.c (init_charset_once): Don't init unibyte_to_multibyte_table.
      * character.h (UNIBYTE_TO_CHAR): New macro.
      (MAKE_CHAR_MULTIBYTE): Use it.
      (unibyte_to_multibyte_table, unibyte_char_to_multibyte): Remove.
      * xdisp.c (get_next_display_element): USE ASCII_CHAR_P.
      (message_dolog, set_message_1):
      * search.c (Freplace_match):
      * editfns.c (Fcompare_buffer_substrings):
      * fns.c (Fcompare_strings): Use MAKE_CHAR_MULTIBYTE.
      (concat):
      * insdel.c (copy_text, count_size_as_multibyte):
      Use ASCII_CHAR_P and BYTE8_TO_CHAR.
      * term.c (produce_glyphs):
      * syntax.c (skip_chars): Use BYTE8_TO_CHAR.
      * regex.c (RE_CHAR_TO_MULTIBYTE):
      * cmds.c (internal_self_insert):
      * buffer.h (FETCH_CHAR_AS_MULTIBYTE): Use UNIBYTE_TO_CHAR.
      4c0354d7
  14. 12 Sep, 2009 1 commit
  15. 17 Aug, 2009 1 commit
  16. 10 Aug, 2009 1 commit
  17. 28 Apr, 2009 1 commit
  18. 27 Jan, 2009 1 commit
  19. 19 Jan, 2009 1 commit
  20. 08 Jan, 2009 1 commit
  21. 06 Nov, 2008 1 commit
  22. 14 Aug, 2008 1 commit
  23. 27 Jul, 2008 1 commit
    • Dan Nicolaescu's avatar
      Remove support for Mac Carbon. · 9e2a2647
      Dan Nicolaescu authored
      * mactoolbox.c:
      * macterm.h:
      * macterm.c:
      * macselect.c:
      * macmenu.c:
      * macgui.h:
      * macfns.c:
      * mac.c: Remove file.
      * s/darwin.h:
      * m/intel386.h:
      * xfaces.c:
      * xdisp.c:
      * window.c:
      * tparam.c:
      * termhooks.h:
      * termcap.c:
      * term.c:
      * syssignal.h:
      * sysselect.h:
      * sysdep.c:
      * process.c:
      * lread.c:
      * lisp.h:
      * keyboard.c:
      * image.c:
      * fringe.c:
      * frame.h:
      * frame.c:
      * fontset.c:
      * font.h:
      * font.c:
      * fns.c:
      * fileio.c:
      * emacs.c:
      * dispnew.c:
      * dispextern.h:
      * config.in:
      * atimer.c:
      * Makefile.in: Remove code for Carbon
      
      * erc.el: Remove code for Carbon.
      
      Remove support for Mac Carbon.
      * term/mac-win.el: Remove file
      * international/mule-cmds.el:
      * version.el:
      * startup.el:
      * simple.el:
      * mwheel.el:
      * mouse.el:
      * loadup.el:
      * isearch.el:
      * info.el:
      * frame.el:
      * faces.el:
      * disp-table.el:
      * cus-start.el:
      * cus-face.el:
      * cus-edit.el:
      * Makefile.in: Remove code for Carbon.
      
      Remove support for Mac Carbon.
      * makefile.w32-in:
      * emacsclient.c: Remove code for Carbon.
      
      * PROBLEMS:
      * MACHINES: Remove mentions of Mac Carbon.
      
      * ns-emacs.texi:
      * faq.texi: Remove mentions of Mac Carbon.
      
      * os.texi:
      * frames.texi:
      * display.texi: Remove mentions of Mac Carbon.
      
      * xresources.texi: Remove mentions of Mac Carbon.
      
      * make-tarball.txt:
      * admin.el:
      * FOR-RELEASE:
      * CPP-DEFINES: Remove mentions of Mac Carbon.
      
      Remove support for Mac Carbon.
      * mac: Remove directory.
      * make-dist:
      * configure.in:
      * README:
      * Makefile.in:
      * INSTALL:  Remove code for Carbon.
      * configure: Regenerate.
      9e2a2647
  24. 19 Jul, 2008 1 commit
  25. 17 Jul, 2008 1 commit
    • Dan Nicolaescu's avatar
      * ecrt0.c: Remove code depending on m68000, not used anymore. · 2749d28e
      Dan Nicolaescu authored
      * fns.c (hash_remove): Make static.
      * lisp.h (hash_remove): Don't prototype.
      
      * m/ibmrs6000.h:
      * m/ibms390x.h:
      * m/macppc.h: Remove boilerplate comments.
      
      * m/sparc.h (A_TEXT_OFFSET, A_TEXT_SEEK): Remove, only used on
      Solaris, which does not need them.
      
      * m/vax.h: Remove comments about unsupported systems.
      
      * s/darwin.h: Reorganize ifdefs.
      2749d28e
  26. 04 Jul, 2008 1 commit
  27. 25 Jun, 2008 3 commits
  28. 15 May, 2008 1 commit
  29. 14 May, 2008 2 commits
  30. 19 Mar, 2008 1 commit
    • Jason Rumney's avatar
      * w32fns.c (hourglass_timer, hourglass_hwnd): New variables. · d148e14d
      Jason Rumney authored
      (syms_of_w32fns): Initialize them.
      (HOURGLASS_ID): New constant.
      (x_window_to_frame): Don't check hourglass_window.
      (w32_wnd_proc) <WM_TIMER>: Handle hourglass_timer.
      (w32_wnd_proc) <WM_EXITMENULOOP>: Set pending hourglass cursor.
      (w32_wnd_proc) <WM_SETCURSOR>: Set the hourglass or current cursor.
      (w32_wnd_proc) <WM_EMACS_SETCURSOR>: Set frame's current_cursor.
      Only change the cursor if hourglass is not active.
      (Fx_create_frame): Initialize frame's current_cursor.
      (hourglass_atimer): Remove.
      (hourglass_started): New function.
      (start_hourglass, cancel_hourglass, hide_hourglass): Adapt to w32.
      (show_hourglass): Adapt to w32, changing argument to frame.
      
      * w32term.h (struct w32_output): Remove hourglass_window.
      Add current_cursor.
      
      * eval.c (call_debugger, Fsignal):
      * keyboard.c (recursive_edit_1, cmd_error, Ftop_level)
      (command_loop_1, Fread_key_sequence, Fread_key_sequence_vector)
      (Fexecute_extended_command, cancel_hourglass_unwind):
      * minibuf.c (read_minibuf):
      * fns.c (Fy_or_n_p): Enable hourglass when HAVE_WINDOW_SYSTEM.
      d148e14d
  31. 12 Feb, 2008 1 commit
    • Stefan Monnier's avatar
      * coding.c (coding_set_destination): Use BEG_BYTE rather than hardcoding 1. · 13818c30
      Stefan Monnier authored
      (detect_coding_system):
      * lisp.h (detect_coding_system, chars_in_text, multibyte_chars_in_text)
      (string_char_to_byte, string_byte_to_char, insert_from_gap):
      * insdel.c (insert_from_gap):
      * fns.c (string_char_byte_cache_charpos, string_char_byte_cache_bytepos)
      (string_char_to_byte, string_byte_to_char, string_make_multibyte)
      (string_to_multibyte):
      * character.c (chars_in_text, multibyte_chars_in_text):
      * fileio.c (Finsert_file_contents): Use EMACS_INT for buffer positions.
      13818c30
  32. 08 Feb, 2008 1 commit
  33. 26 Jan, 2008 1 commit
  34. 25 Jan, 2008 1 commit
  35. 17 Jan, 2008 1 commit