=== modified file 'admin/ChangeLog' --- admin/ChangeLog 2012-06-24 16:18:41 +0000 +++ admin/ChangeLog 2012-06-25 08:40:47 +0000 @@ -1,3 +1,10 @@ +2012-06-25 Dmitry Antipov + + * coccinelle/window_members.cocci: Semantic patch to adjust all + users after changing `last_modified' and `last_overlay_modified' + from Lisp_Object to EMACS_INT, and `last_point' from Lisp_Object + to ptrdiff_t in a `struct window'. + 2012-06-24 Dmitry Antipov First Coccinelle semantic patch. === added file 'admin/coccinelle/window_members.cocci' --- admin/coccinelle/window_members.cocci 1970-01-01 00:00:00 +0000 +++ admin/coccinelle/window_members.cocci 2012-06-25 08:40:47 +0000 @@ -0,0 +1,44 @@ +// Adjust all users after changing `last_modified' and `last_overlay_modified' +// from Lisp_Object to EMACS_INT, and `last_point' from Lisp_Object to +// ptrdiff_t in a `struct window'. +@@ +expression E; +identifier W; +@@ +( +- W->last_point = make_numer (E) ++ W->last_point = E +| +- XSETFASTINT (W->last_point, E) ++ W->last_point = E +| +- XINT (W->last_point) ++ W->last_point +| +- XFASTINT (W->last_point) ++ W->last_point +| +- XSETFASTINT (XWINDOW (W)->last_modified, E) ++ XWINDOW (W)->last_modified = E +| +- XSETFASTINT (W->last_modified, E) ++ W->last_modified = E +| +- W->last_modified = make_number (E) ++ W->last_modified = E +| +- XFASTINT (W->last_modified) ++ W->last_modified +| +- XSETFASTINT (XWINDOW (W)->last_overlay_modified, E) ++ XWINDOW (W)->last_overlay_modified = E +| +- XSETFASTINT (W->last_overlay_modified, E) ++ W->last_overlay_modified = E +| +- W->last_overlay_modifed = make_number (E) ++ W->last_overlay_modifed = E +| +- XFASTINT (W->last_overlay_modified) ++ W->last_overlay_modified +) === modified file 'src/ChangeLog' --- src/ChangeLog 2012-06-25 07:54:45 +0000 +++ src/ChangeLog 2012-06-25 08:42:44 +0000 @@ -1,3 +1,10 @@ +2012-06-25 Dmitry Antipov + + * window.h (struct window): For a `struct window', change + `last_modified' and `last_overlay_modified' from Lisp_Object + to EMACS_INT, and `last_point' from Lisp_Object to ptrdiff_t. + Adjust users accordingly. + 2012-06-25 Paul Eggert * gtkutil.c (get_utf8_string): Remove redundant assignment. === modified file 'src/frame.c' --- src/frame.c 2012-06-19 06:49:50 +0000 +++ src/frame.c 2012-06-25 08:40:47 +0000 @@ -131,7 +131,7 @@ { struct window *w = XWINDOW (window); - XSETFASTINT (w->last_modified, 0); + w->last_modified = 0; XSETFASTINT (w->top_line, XFASTINT (w->top_line) + n); XSETFASTINT (w->total_lines, XFASTINT (w->total_lines) - n); === modified file 'src/minibuf.c' --- src/minibuf.c 2012-06-19 17:05:41 +0000 +++ src/minibuf.c 2012-06-25 08:40:47 +0000 @@ -888,8 +888,8 @@ /* Make sure minibuffer window is erased, not ignored. */ windows_or_buffers_changed++; - XSETFASTINT (XWINDOW (window)->last_modified, 0); - XSETFASTINT (XWINDOW (window)->last_overlay_modified, 0); + XWINDOW (window)->last_modified = 0; + XWINDOW (window)->last_overlay_modified = 0; /* In case the previous minibuffer displayed in this miniwindow is dead, we may keep displaying this buffer (tho it's inactive), so reset it, === modified file 'src/window.c' --- src/window.c 2012-06-19 16:56:28 +0000 +++ src/window.c 2012-06-25 08:40:47 +0000 @@ -1314,8 +1314,8 @@ if (! NILP (update) && ! (! NILP (w->window_end_valid) - && XFASTINT (w->last_modified) >= BUF_MODIFF (b) - && XFASTINT (w->last_overlay_modified) >= BUF_OVERLAY_MODIFF (b)) + && w->last_modified >= BUF_MODIFF (b) + && w->last_overlay_modified >= BUF_OVERLAY_MODIFF (b)) && !noninteractive) { struct text_pos startp; @@ -1398,8 +1398,8 @@ if (NILP (noforce)) w->force_start = 1; w->update_mode_line = 1; - XSETFASTINT (w->last_modified, 0); - XSETFASTINT (w->last_overlay_modified, 0); + w->last_modified = 0; + w->last_overlay_modified = 0; if (!EQ (window, selected_window)) windows_or_buffers_changed++; @@ -1511,8 +1511,8 @@ if (NILP (w->window_end_valid) || current_buffer->clip_changed || current_buffer->prevent_redisplay_optimizations_p - || XFASTINT (w->last_modified) < BUF_MODIFF (b) - || XFASTINT (w->last_overlay_modified) < BUF_OVERLAY_MODIFF (b)) + || w->last_modified < BUF_MODIFF (b) + || w->last_overlay_modified < BUF_OVERLAY_MODIFF (b)) return Qnil; if (NILP (line)) @@ -3011,8 +3011,8 @@ buffer); w->start_at_line_beg = 0; w->force_start = 0; - XSETFASTINT (w->last_modified, 0); - XSETFASTINT (w->last_overlay_modified, 0); + w->last_modified = 0; + w->last_overlay_modified = 0; } /* Maybe we could move this into the `if' but it's not obviously safe and I doubt it's worth the trouble. */ @@ -3298,8 +3298,9 @@ XSETFASTINT (w->use_time, 0); ++sequence_number; XSETFASTINT (w->sequence_number, sequence_number); - w->temslot = w->last_modified = w->last_overlay_modified = Qnil; - XSETFASTINT (w->last_point, 0); + w->temslot = Qnil; + w->last_modified = w->last_overlay_modified = 0; + w->last_point = 0; w->last_had_star = 0; w->vertical_scroll_bar = Qnil; w->left_margin_cols = w->right_margin_cols = Qnil; @@ -3518,8 +3519,8 @@ } /* Clear out some redisplay caches. */ - XSETFASTINT (w->last_modified, 0); - XSETFASTINT (w->last_overlay_modified, 0); + w->last_modified = 0; + w->last_overlay_modified = 0; } @@ -4051,8 +4052,8 @@ /* Grow the mini-window. */ XSETFASTINT (w->top_line, XFASTINT (r->top_line) + XFASTINT (r->total_lines)); XSETFASTINT (w->total_lines, XFASTINT (w->total_lines) - XINT (value)); - XSETFASTINT (w->last_modified, 0); - XSETFASTINT (w->last_overlay_modified, 0); + w->last_modified = 0; + w->last_overlay_modified = 0; adjust_glyphs (f); UNBLOCK_INPUT; @@ -4087,8 +4088,8 @@ XSETFASTINT (w->top_line, XFASTINT (r->top_line) + XFASTINT (r->total_lines)); XSETFASTINT (w->total_lines, 1); - XSETFASTINT (w->last_modified, 0); - XSETFASTINT (w->last_overlay_modified, 0); + w->last_modified = 0; + w->last_overlay_modified = 0; adjust_glyphs (f); UNBLOCK_INPUT; @@ -4315,8 +4316,8 @@ w->buffer); w->start_at_line_beg = 1; w->update_mode_line = 1; - XSETFASTINT (w->last_modified, 0); - XSETFASTINT (w->last_overlay_modified, 0); + w->last_modified = 0; + w->last_overlay_modified = 0; /* Set force_start so that redisplay_window will run the window-scroll-functions. */ w->force_start = 1; @@ -4461,8 +4462,8 @@ bytepos = XMARKER (w->start)->bytepos; w->start_at_line_beg = (pos == BEGV || FETCH_BYTE (bytepos - 1) == '\n'); w->update_mode_line = 1; - XSETFASTINT (w->last_modified, 0); - XSETFASTINT (w->last_overlay_modified, 0); + w->last_modified = 0; + w->last_overlay_modified = 0; /* Set force_start so that redisplay_window will run the window-scroll-functions. */ w->force_start = 1; @@ -4660,8 +4661,8 @@ set_marker_restricted_both (w->start, w->buffer, pos, pos_byte); w->start_at_line_beg = !NILP (bolp); w->update_mode_line = 1; - XSETFASTINT (w->last_modified, 0); - XSETFASTINT (w->last_overlay_modified, 0); + w->last_modified = 0; + w->last_overlay_modified = 0; /* Set force_start so that redisplay_window will run the window-scroll-functions. */ w->force_start = 1; @@ -5601,8 +5602,8 @@ } } - XSETFASTINT (w->last_modified, 0); - XSETFASTINT (w->last_overlay_modified, 0); + w->last_modified = 0; + w->last_overlay_modified = 0; /* Reinstall the saved buffer and pointers into it. */ if (NILP (p->buffer)) === modified file 'src/window.h' --- src/window.h 2012-06-01 03:41:03 +0000 +++ src/window.h 2012-06-25 08:40:47 +0000 @@ -157,14 +157,6 @@ bookkeeping. */ Lisp_Object temslot; - /* text.modified of displayed buffer as of last time display - completed. */ - Lisp_Object last_modified; - /* BUF_OVERLAY_MODIFIED of displayed buffer as of last complete update. */ - Lisp_Object last_overlay_modified; - /* Value of point at that time. */ - Lisp_Object last_point; - /* This window's vertical scroll bar. This field is only for use by the window-system-dependent code which implements the scroll bars; it can store anything it likes here. If this @@ -254,6 +246,17 @@ struct glyph_matrix *current_matrix; struct glyph_matrix *desired_matrix; + /* Displayed buffer's text modification events counter as of last time + display completed. */ + EMACS_INT last_modified; + + /* Displayed buffer's overlays modification events counter as of last + complete update. */ + EMACS_INT last_overlay_modified; + + /* Value of point at that time. */ + ptrdiff_t last_point; + /* Scaling factor for the glyph_matrix size calculation in this window. Used if window contains many small images or uses proportional fonts, as the normal may yield a matrix which is too small. */ === modified file 'src/xdisp.c' --- src/xdisp.c 2012-06-22 21:17:42 +0000 +++ src/xdisp.c 2012-06-25 08:40:47 +0000 @@ -12510,8 +12510,8 @@ int unchanged_p = 1; /* If text or overlays have changed, see where. */ - if (XFASTINT (w->last_modified) < MODIFF - || XFASTINT (w->last_overlay_modified) < OVERLAY_MODIFF) + if (w->last_modified < MODIFF + || w->last_overlay_modified < OVERLAY_MODIFF) { /* Gap in the line? */ if (GPT < start || Z - GPT < end) @@ -12790,9 +12790,9 @@ pt = marker_position (w->pointm); if ((w->current_matrix->buffer != XBUFFER (w->buffer) - || pt != XINT (w->last_point)) + || pt != w->last_point) && check_point_in_composition (w->current_matrix->buffer, - XINT (w->last_point), + w->last_point, XBUFFER (w->buffer), pt)) b->clip_changed = 1; } @@ -13014,9 +13014,9 @@ if (!NILP (w->column_number_displayed) /* This alternative quickly identifies a common case where no change is needed. */ - && !(PT == XFASTINT (w->last_point) - && XFASTINT (w->last_modified) >= MODIFF - && XFASTINT (w->last_overlay_modified) >= OVERLAY_MODIFF) + && !(PT == w->last_point + && w->last_modified >= MODIFF + && w->last_overlay_modified >= OVERLAY_MODIFF) && (XFASTINT (w->column_number_displayed) != current_column ())) w->update_mode_line = 1; @@ -13079,8 +13079,8 @@ } else if (EQ (selected_window, minibuf_window) && (current_buffer->clip_changed - || XFASTINT (w->last_modified) < MODIFF - || XFASTINT (w->last_overlay_modified) < OVERLAY_MODIFF) + || w->last_modified < MODIFF + || w->last_overlay_modified < OVERLAY_MODIFF) && resize_mini_window (w, 0)) { /* Resized active mini-window to fit the size of what it is @@ -13145,8 +13145,8 @@ || FETCH_BYTE (BYTEPOS (tlbufpos)) == '\n')) /* Former continuation line has disappeared by becoming empty. */ goto cancel; - else if (XFASTINT (w->last_modified) < MODIFF - || XFASTINT (w->last_overlay_modified) < OVERLAY_MODIFF + else if (w->last_modified < MODIFF + || w->last_overlay_modified < OVERLAY_MODIFF || MINI_WINDOW_P (w)) { /* We have to handle the case of continuation around a @@ -13250,7 +13250,7 @@ goto cancel; } else if (/* Cursor position hasn't changed. */ - PT == XFASTINT (w->last_point) + PT == w->last_point /* Make sure the cursor was last displayed in this window. Otherwise we have to reposition it. */ && 0 <= w->cursor.vpos @@ -13666,10 +13666,8 @@ { struct buffer *b = XBUFFER (w->buffer); - w->last_modified - = make_number (accurate_p ? BUF_MODIFF (b) : 0); - w->last_overlay_modified - = make_number (accurate_p ? BUF_OVERLAY_MODIFF (b) : 0); + w->last_modified = accurate_p ? BUF_MODIFF(b) : 0; + w->last_overlay_modified = accurate_p ? BUF_OVERLAY_MODIFF (b) : 0; w->last_had_star = BUF_MODIFF (b) > BUF_SAVE_MODIFF (b); @@ -13691,9 +13689,9 @@ w->last_cursor_off_p = w->cursor_off_p; if (w == XWINDOW (selected_window)) - w->last_point = make_number (BUF_PT (b)); + w->last_point = BUF_PT (b); else - w->last_point = make_number (XMARKER (w->pointm)->charpos); + w->last_point = XMARKER (w->pointm)->charpos; } } @@ -14954,8 +14952,6 @@ && !NILP (BVAR (current_buffer, mark_active))) && NILP (w->region_showing) && NILP (Vshow_trailing_whitespace) - /* Right after splitting windows, last_point may be nil. */ - && INTEGERP (w->last_point) /* This code is not used for mini-buffer for the sake of the case of redisplaying to replace an echo area message; since in that case the mini-buffer contents per se are usually @@ -15013,7 +15009,7 @@ int scroll_p = 0, must_scroll = 0; int last_y = window_text_bottom_y (w) - this_scroll_margin; - if (PT > XFASTINT (w->last_point)) + if (PT > w->last_point) { /* Point has moved forward. */ while (MATRIX_ROW_END_CHARPOS (row) < PT @@ -15048,7 +15044,7 @@ && !MATRIX_ROW_ENDS_IN_MIDDLE_OF_CHAR_P (row))) scroll_p = 1; } - else if (PT < XFASTINT (w->last_point)) + else if (PT < w->last_point) { /* Cursor has to be moved backward. Note that PT >= CHARPOS (startp) because of the outer if-statement. */ @@ -15394,8 +15390,8 @@ = (!NILP (w->window_end_valid) && !current_buffer->clip_changed && !current_buffer->prevent_redisplay_optimizations_p - && XFASTINT (w->last_modified) >= MODIFF - && XFASTINT (w->last_overlay_modified) >= OVERLAY_MODIFF); + && w->last_modified >= MODIFF + && w->last_overlay_modified >= OVERLAY_MODIFF); /* Run the window-bottom-change-functions if it is possible that the text on the screen has changed @@ -15417,8 +15413,8 @@ buffer_unchanged_p = (!NILP (w->window_end_valid) && !current_buffer->clip_changed - && XFASTINT (w->last_modified) >= MODIFF - && XFASTINT (w->last_overlay_modified) >= OVERLAY_MODIFF); + && w->last_modified >= MODIFF + && w->last_overlay_modified >= OVERLAY_MODIFF); /* When windows_or_buffers_changed is non-zero, we can't rely on the window end being valid, so set it to nil there. */ @@ -15443,9 +15439,9 @@ if (!NILP (w->column_number_displayed) /* This alternative quickly identifies a common case where no change is needed. */ - && !(PT == XFASTINT (w->last_point) - && XFASTINT (w->last_modified) >= MODIFF - && XFASTINT (w->last_overlay_modified) >= OVERLAY_MODIFF) + && !(PT == w->last_point + && w->last_modified >= MODIFF + && w->last_overlay_modified >= OVERLAY_MODIFF) && (XFASTINT (w->column_number_displayed) != current_column ())) update_mode_line = 1; @@ -15561,8 +15557,8 @@ startp = run_window_scroll_functions (window, startp); } - w->last_modified = make_number (0); - w->last_overlay_modified = make_number (0); + w->last_modified = 0; + w->last_overlay_modified = 0; if (CHARPOS (startp) < BEGV) SET_TEXT_POS (startp, BEGV, BEGV_BYTE); else if (CHARPOS (startp) > ZV) @@ -15687,8 +15683,8 @@ && (CHARPOS (startp) < ZV /* Avoid starting at end of buffer. */ || CHARPOS (startp) == BEGV - || (XFASTINT (w->last_modified) >= MODIFF - && XFASTINT (w->last_overlay_modified) >= OVERLAY_MODIFF))) + || (w->last_modified >= MODIFF + && w->last_overlay_modified >= OVERLAY_MODIFF))) { int d1, d2, d3, d4, d5, d6; @@ -15775,8 +15771,8 @@ try_to_scroll: - w->last_modified = make_number (0); - w->last_overlay_modified = make_number (0); + w->last_modified = 0; + w->last_overlay_modified = 0; /* Redisplay the mode line. Select the buffer properly for that. */ if (!update_mode_line) @@ -17135,7 +17131,7 @@ GIVE_UP (5); /* Another way to prevent redisplay optimizations. */ - if (XFASTINT (w->last_modified) == 0) + if (w->last_modified == 0) GIVE_UP (6); /* Verify that window is not hscrolled. */ @@ -27412,8 +27408,8 @@ b = XBUFFER (w->buffer); if (part == ON_TEXT && EQ (w->window_end_valid, w->buffer) - && XFASTINT (w->last_modified) == BUF_MODIFF (b) - && XFASTINT (w->last_overlay_modified) == BUF_OVERLAY_MODIFF (b)) + && w->last_modified == BUF_MODIFF (b) + && w->last_overlay_modified == BUF_OVERLAY_MODIFF (b)) { int hpos, vpos, dx, dy, area = LAST_AREA; ptrdiff_t pos;