aboutsummaryrefslogtreecommitdiffstats
path: root/src/frame.c
diff options
context:
space:
mode:
authorPaul Eggert2015-01-10 13:33:38 -0800
committerPaul Eggert2015-01-10 13:42:35 -0800
commit6a37ecee0884ff30ac7666e6502e2a9d2608f291 (patch)
tree875bd8310981ff850911f04da4c3c3b95f34537b /src/frame.c
parent649937920b5023be5c0685d1537f5ea2bfb9899a (diff)
downloademacs-6a37ecee0884ff30ac7666e6502e2a9d2608f291.tar.gz
emacs-6a37ecee0884ff30ac7666e6502e2a9d2608f291.zip
Port to 32-bit --with-wide-int
Prefer symbol indexes to struct Lisp_Symbol * casted and then widened, as the latter had trouble with GCC on Fedora 21 when configured --with-wide-int and when used in static initializers. * lib-src/make-docfile.c (write_globals): Define and use symbols like iQnil (a small integer, like 0) rather than aQnil (an address constant). * src/alloc.c (garbage_collect_1, which_symbols): * src/lread.c (init_obarray): Prefer builtin_lisp_symbol when it can be used. * src/dispextern.h (struct image_type.type): * src/font.c (font_property_table.key): * src/frame.c (struct frame_parm_table.sym): * src/keyboard.c (scroll_bar_parts, struct event_head): * src/xdisp.c (struct props.name): Use the index of a builtin symbol rather than its address. All uses changed. * src/lisp.h (TAG_SYMPTR, XSYMBOL_INIT): Remove, replacing with ... (TAG_SYMOFFSET, SYMBOL_INDEX): ... new macros that deal with symbol indexes rather than pointers, and which work better on MSB hosts because they shift right before tagging. All uses changed. (DEFINE_LISP_SYMBOL_BEGIN, DEFINE_LISP_SYMBOL_END): No longer noops on wide-int hosts, since they work now. (builtin_lisp_symbol): New function.
Diffstat (limited to 'src/frame.c')
-rw-r--r--src/frame.c82
1 files changed, 41 insertions, 41 deletions
diff --git a/src/frame.c b/src/frame.c
index fb9bf2e9cbb..3d2ffbf624f 100644
--- a/src/frame.c
+++ b/src/frame.c
@@ -2925,48 +2925,48 @@ or bottommost possible position (that stays within the screen). */)
2925 2925
2926struct frame_parm_table { 2926struct frame_parm_table {
2927 const char *name; 2927 const char *name;
2928 struct Lisp_Symbol *sym; 2928 int sym;
2929}; 2929};
2930 2930
2931static const struct frame_parm_table frame_parms[] = 2931static const struct frame_parm_table frame_parms[] =
2932{ 2932{
2933 {"auto-raise", XSYMBOL_INIT (Qauto_raise)}, 2933 {"auto-raise", SYMBOL_INDEX (Qauto_raise)},
2934 {"auto-lower", XSYMBOL_INIT (Qauto_lower)}, 2934 {"auto-lower", SYMBOL_INDEX (Qauto_lower)},
2935 {"background-color", 0}, 2935 {"background-color", -1},
2936 {"border-color", XSYMBOL_INIT (Qborder_color)}, 2936 {"border-color", SYMBOL_INDEX (Qborder_color)},
2937 {"border-width", XSYMBOL_INIT (Qborder_width)}, 2937 {"border-width", SYMBOL_INDEX (Qborder_width)},
2938 {"cursor-color", XSYMBOL_INIT (Qcursor_color)}, 2938 {"cursor-color", SYMBOL_INDEX (Qcursor_color)},
2939 {"cursor-type", XSYMBOL_INIT (Qcursor_type)}, 2939 {"cursor-type", SYMBOL_INDEX (Qcursor_type)},
2940 {"font", 0}, 2940 {"font", -1},
2941 {"foreground-color", 0}, 2941 {"foreground-color", -1},
2942 {"icon-name", XSYMBOL_INIT (Qicon_name)}, 2942 {"icon-name", SYMBOL_INDEX (Qicon_name)},
2943 {"icon-type", XSYMBOL_INIT (Qicon_type)}, 2943 {"icon-type", SYMBOL_INDEX (Qicon_type)},
2944 {"internal-border-width", XSYMBOL_INIT (Qinternal_border_width)}, 2944 {"internal-border-width", SYMBOL_INDEX (Qinternal_border_width)},
2945 {"right-divider-width", XSYMBOL_INIT (Qright_divider_width)}, 2945 {"right-divider-width", SYMBOL_INDEX (Qright_divider_width)},
2946 {"bottom-divider-width", XSYMBOL_INIT (Qbottom_divider_width)}, 2946 {"bottom-divider-width", SYMBOL_INDEX (Qbottom_divider_width)},
2947 {"menu-bar-lines", XSYMBOL_INIT (Qmenu_bar_lines)}, 2947 {"menu-bar-lines", SYMBOL_INDEX (Qmenu_bar_lines)},
2948 {"mouse-color", XSYMBOL_INIT (Qmouse_color)}, 2948 {"mouse-color", SYMBOL_INDEX (Qmouse_color)},
2949 {"name", XSYMBOL_INIT (Qname)}, 2949 {"name", SYMBOL_INDEX (Qname)},
2950 {"scroll-bar-width", XSYMBOL_INIT (Qscroll_bar_width)}, 2950 {"scroll-bar-width", SYMBOL_INDEX (Qscroll_bar_width)},
2951 {"scroll-bar-height", XSYMBOL_INIT (Qscroll_bar_height)}, 2951 {"scroll-bar-height", SYMBOL_INDEX (Qscroll_bar_height)},
2952 {"title", XSYMBOL_INIT (Qtitle)}, 2952 {"title", SYMBOL_INDEX (Qtitle)},
2953 {"unsplittable", XSYMBOL_INIT (Qunsplittable)}, 2953 {"unsplittable", SYMBOL_INDEX (Qunsplittable)},
2954 {"vertical-scroll-bars", XSYMBOL_INIT (Qvertical_scroll_bars)}, 2954 {"vertical-scroll-bars", SYMBOL_INDEX (Qvertical_scroll_bars)},
2955 {"horizontal-scroll-bars", XSYMBOL_INIT (Qhorizontal_scroll_bars)}, 2955 {"horizontal-scroll-bars", SYMBOL_INDEX (Qhorizontal_scroll_bars)},
2956 {"visibility", XSYMBOL_INIT (Qvisibility)}, 2956 {"visibility", SYMBOL_INDEX (Qvisibility)},
2957 {"tool-bar-lines", XSYMBOL_INIT (Qtool_bar_lines)}, 2957 {"tool-bar-lines", SYMBOL_INDEX (Qtool_bar_lines)},
2958 {"scroll-bar-foreground", XSYMBOL_INIT (Qscroll_bar_foreground)}, 2958 {"scroll-bar-foreground", SYMBOL_INDEX (Qscroll_bar_foreground)},
2959 {"scroll-bar-background", XSYMBOL_INIT (Qscroll_bar_background)}, 2959 {"scroll-bar-background", SYMBOL_INDEX (Qscroll_bar_background)},
2960 {"screen-gamma", XSYMBOL_INIT (Qscreen_gamma)}, 2960 {"screen-gamma", SYMBOL_INDEX (Qscreen_gamma)},
2961 {"line-spacing", XSYMBOL_INIT (Qline_spacing)}, 2961 {"line-spacing", SYMBOL_INDEX (Qline_spacing)},
2962 {"left-fringe", XSYMBOL_INIT (Qleft_fringe)}, 2962 {"left-fringe", SYMBOL_INDEX (Qleft_fringe)},
2963 {"right-fringe", XSYMBOL_INIT (Qright_fringe)}, 2963 {"right-fringe", SYMBOL_INDEX (Qright_fringe)},
2964 {"wait-for-wm", XSYMBOL_INIT (Qwait_for_wm)}, 2964 {"wait-for-wm", SYMBOL_INDEX (Qwait_for_wm)},
2965 {"fullscreen", XSYMBOL_INIT (Qfullscreen)}, 2965 {"fullscreen", SYMBOL_INDEX (Qfullscreen)},
2966 {"font-backend", XSYMBOL_INIT (Qfont_backend)}, 2966 {"font-backend", SYMBOL_INDEX (Qfont_backend)},
2967 {"alpha", XSYMBOL_INIT (Qalpha)}, 2967 {"alpha", SYMBOL_INDEX (Qalpha)},
2968 {"sticky", XSYMBOL_INIT (Qsticky)}, 2968 {"sticky", SYMBOL_INDEX (Qsticky)},
2969 {"tool-bar-position", XSYMBOL_INIT (Qtool_bar_position)}, 2969 {"tool-bar-position", SYMBOL_INDEX (Qtool_bar_position)},
2970}; 2970};
2971 2971
2972#ifdef HAVE_WINDOW_SYSTEM 2972#ifdef HAVE_WINDOW_SYSTEM
@@ -4824,9 +4824,9 @@ syms_of_frame (void)
4824 4824
4825 for (i = 0; i < ARRAYELTS (frame_parms); i++) 4825 for (i = 0; i < ARRAYELTS (frame_parms); i++)
4826 { 4826 {
4827 Lisp_Object v = (frame_parms[i].sym 4827 Lisp_Object v = (frame_parms[i].sym < 0
4828 ? make_lisp_symbol (frame_parms[i].sym) 4828 ? intern_c_string (frame_parms[i].name)
4829 : intern_c_string (frame_parms[i].name)); 4829 : builtin_lisp_symbol (frame_parms[i].sym));
4830 Fput (v, Qx_frame_parameter, make_number (i)); 4830 Fput (v, Qx_frame_parameter, make_number (i));
4831 } 4831 }
4832 } 4832 }