annotate src/profile.h @ 5043:d0c14ea98592

various frame-geometry fixes -------------------- ChangeLog entries follow: -------------------- src/ChangeLog addition: 2010-02-15 Ben Wing <ben@xemacs.org> * EmacsFrame.c: * EmacsFrame.c (EmacsFrameResize): * console-msw-impl.h: * console-msw-impl.h (struct mswindows_frame): * console-msw-impl.h (FRAME_MSWINDOWS_TARGET_RECT): * device-tty.c: * device-tty.c (tty_asynch_device_change): * event-msw.c: * event-msw.c (mswindows_wnd_proc): * faces.c (Fface_list): * faces.h: * frame-gtk.c: * frame-gtk.c (gtk_set_initial_frame_size): * frame-gtk.c (gtk_set_frame_size): * frame-msw.c: * frame-msw.c (mswindows_init_frame_1): * frame-msw.c (mswindows_set_frame_size): * frame-msw.c (mswindows_size_frame_internal): * frame-msw.c (msprinter_init_frame_3): * frame.c: * frame.c (enum): * frame.c (Fmake_frame): * frame.c (adjust_frame_size): * frame.c (store_minibuf_frame_prop): * frame.c (Fframe_property): * frame.c (Fframe_properties): * frame.c (Fframe_displayable_pixel_height): * frame.c (Fframe_displayable_pixel_width): * frame.c (internal_set_frame_size): * frame.c (Fset_frame_height): * frame.c (Fset_frame_pixel_height): * frame.c (Fset_frame_displayable_pixel_height): * frame.c (Fset_frame_width): * frame.c (Fset_frame_pixel_width): * frame.c (Fset_frame_displayable_pixel_width): * frame.c (Fset_frame_size): * frame.c (Fset_frame_pixel_size): * frame.c (Fset_frame_displayable_pixel_size): * frame.c (frame_conversion_internal_1): * frame.c (get_frame_displayable_pixel_size): * frame.c (change_frame_size_1): * frame.c (change_frame_size): * frame.c (generate_title_string): * frame.h: * gtk-xemacs.c: * gtk-xemacs.c (gtk_xemacs_size_request): * gtk-xemacs.c (gtk_xemacs_size_allocate): * gtk-xemacs.c (gtk_xemacs_paint): * gutter.c: * gutter.c (update_gutter_geometry): * redisplay.c (end_hold_frame_size_changes): * redisplay.c (redisplay_frame): * toolbar.c: * toolbar.c (update_frame_toolbars_geometry): * window.c: * window.c (frame_pixsize_valid_p): * window.c (check_frame_size): Various fixes to frame geometry to make it a bit easier to understand and fix some bugs. 1. IMPORTANT: Some renamings. Will need to be applied carefully to the carbon repository, in the following order: -- pixel_to_char_size -> pixel_to_frame_unit_size -- char_to_pixel_size -> frame_unit_to_pixel_size -- pixel_to_real_char_size -> pixel_to_char_size -- char_to_real_pixel_size -> char_to_pixel_size -- Reverse second and third arguments of change_frame_size() and change_frame_size_1() to try to make functions consistent in putting width before height. -- Eliminate old round_size_to_char, because it didn't really do anything differently from round_size_to_real_char() -- round_size_to_real_char -> round_size_to_char; any places that called the old round_size_to_char should just call the new one. 2. IMPORTANT FOR CARBON: The set_frame_size() method is now passed sizes in "frame units", like all other frame-sizing functions, rather than some hacked-up combination of char-cell units and total pixel size. This only affects window systems that use "pixelated geometry", and I'm not sure if Carbon is one of them. MS Windows is pixelated, X and GTK are not. For pixelated-geometry systems, the size in set_frame_size() is in displayable pixels rather than total pixels and needs to be converted appropriately; take a look at the changes made to mswindows_set_frame_size() method if necessary. 3. Add a big long comment in frame.c describing how frame geometry works. 4. Remove MS Windows-specific character height and width fields, duplicative and unused. 5. frame-displayable-pixel-* and set-frame-displayable-pixel-* didn't use to work on MS Windows, but they do now. 6. In general, clean up the handling of "pixelated geometry" so that fewer functions have to worry about this. This is really an abomination that should be removed entirely but that will have to happen later. Fix some buggy code in frame_conversion_internal() that happened to "work" because it was countered by oppositely buggy code in change_frame_size(). 7. Clean up some frame-size code in toolbar.c and use functions already provided in frame.c instead of rolling its own. 8. Fix check_frame_size() in window.c, which formerly didn't take pixelated geometry into account.
author Ben Wing <ben@xemacs.org>
date Mon, 15 Feb 2010 22:14:11 -0600
parents 8f6a825eb3d3
children 308d34e9f07d
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1292
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents:
diff changeset
1 /* Profiling.
3025
facf3239ba30 [xemacs-hg @ 2005-10-25 11:16:19 by ben]
ben
parents: 2514
diff changeset
2 Copyright (C) 2003, 2005 Ben Wing.
1292
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents:
diff changeset
3
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents:
diff changeset
4 This file is part of XEmacs.
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents:
diff changeset
5
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents:
diff changeset
6 XEmacs is free software; you can redistribute it and/or modify it
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents:
diff changeset
7 under the terms of the GNU General Public License as published by the
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents:
diff changeset
8 Free Software Foundation; either version 2, or (at your option) any
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents:
diff changeset
9 later version.
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents:
diff changeset
10
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents:
diff changeset
11 XEmacs is distributed in the hope that it will be useful, but WITHOUT
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents:
diff changeset
12 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents:
diff changeset
13 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents:
diff changeset
14 for more details.
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents:
diff changeset
15
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents:
diff changeset
16 You should have received a copy of the GNU General Public License
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents:
diff changeset
17 along with XEmacs; see the file COPYING. If not, write to
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents:
diff changeset
18 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents:
diff changeset
19 Boston, MA 02111-1307, USA. */
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents:
diff changeset
20
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents:
diff changeset
21 /* Synched up with: Not in FSF. */
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents:
diff changeset
22
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents:
diff changeset
23 /* Authorship:
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents:
diff changeset
24
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents:
diff changeset
25 Ben Wing: Feb 2003.
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents:
diff changeset
26 */
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents:
diff changeset
27
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents:
diff changeset
28 #include "backtrace.h"
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents:
diff changeset
29
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents:
diff changeset
30 void mark_profiling_info (void);
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents:
diff changeset
31 void profile_record_unwind (struct backtrace *);
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents:
diff changeset
32 void profile_record_about_to_call (struct backtrace *);
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents:
diff changeset
33 void profile_record_just_called (struct backtrace *);
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents:
diff changeset
34 void profile_record_consing (EMACS_INT size);
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents:
diff changeset
35 void profile_record_unconsing (EMACS_INT size);
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents:
diff changeset
36 extern int profiling_active;
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents:
diff changeset
37
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents:
diff changeset
38 /* We call about_to_call() and just_called() depending on the current
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents:
diff changeset
39 *dynamic* value of profiling_active (which could change as a result of
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents:
diff changeset
40 calling the function) but if we push a backtrace, we must pop it later,
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents:
diff changeset
41 so we need to remember the status of this. */
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents:
diff changeset
42 #define PROFILE_DECLARE() \
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents:
diff changeset
43 int do_backtrace = profiling_active || backtrace_with_internal_sections; \
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents:
diff changeset
44 struct backtrace backtrace
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents:
diff changeset
45
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents:
diff changeset
46 /* As just mentioned, we rely on the dynamic value of profiling_active.
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents:
diff changeset
47 This ensures correct behavior (e.g. we never modify the profiling info
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents:
diff changeset
48 when profiling is not active) because we seed and reap all functions
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents:
diff changeset
49 currently on the stack when starting and stopping. See
4162
8f6a825eb3d3 [xemacs-hg @ 2007-09-04 21:20:18 by aidan]
aidan
parents: 3282
diff changeset
50 `start-profiling'.
8f6a825eb3d3 [xemacs-hg @ 2007-09-04 21:20:18 by aidan]
aidan
parents: 3282
diff changeset
51
8f6a825eb3d3 [xemacs-hg @ 2007-09-04 21:20:18 by aidan]
aidan
parents: 3282
diff changeset
52 We check do_backtrace to make sure that the backtrace structure is
8f6a825eb3d3 [xemacs-hg @ 2007-09-04 21:20:18 by aidan]
aidan
parents: 3282
diff changeset
53 initialised. If it isn't, we can enter a function with profiling turned
8f6a825eb3d3 [xemacs-hg @ 2007-09-04 21:20:18 by aidan]
aidan
parents: 3282
diff changeset
54 off, and exit it with it turned on, with the consequence that an
8f6a825eb3d3 [xemacs-hg @ 2007-09-04 21:20:18 by aidan]
aidan
parents: 3282
diff changeset
55 unitialised backtrace structure is passed to
8f6a825eb3d3 [xemacs-hg @ 2007-09-04 21:20:18 by aidan]
aidan
parents: 3282
diff changeset
56 profile_record_just_called. Since do_backtrace is function-local (apart
8f6a825eb3d3 [xemacs-hg @ 2007-09-04 21:20:18 by aidan]
aidan
parents: 3282
diff changeset
57 from in the garbage collector) this avoids that. */
1292
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents:
diff changeset
58 #define PROFILE_ENTER_FUNCTION() \
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents:
diff changeset
59 do \
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents:
diff changeset
60 { \
4162
8f6a825eb3d3 [xemacs-hg @ 2007-09-04 21:20:18 by aidan]
aidan
parents: 3282
diff changeset
61 if (profiling_active && do_backtrace) \
1292
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents:
diff changeset
62 profile_record_about_to_call (&backtrace); \
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents:
diff changeset
63 } \
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents:
diff changeset
64 while (0)
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents:
diff changeset
65
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents:
diff changeset
66 #define PROFILE_EXIT_FUNCTION() \
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents:
diff changeset
67 do \
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents:
diff changeset
68 { \
4162
8f6a825eb3d3 [xemacs-hg @ 2007-09-04 21:20:18 by aidan]
aidan
parents: 3282
diff changeset
69 if (profiling_active && do_backtrace) \
1292
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents:
diff changeset
70 profile_record_just_called (&backtrace); \
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents:
diff changeset
71 } \
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents:
diff changeset
72 while (0)
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents:
diff changeset
73
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents:
diff changeset
74 /* We are entering a section that we would like to record profile information
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents:
diff changeset
75 about. We put this information into the backtrace list, just like
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents:
diff changeset
76 normal functions do. That is one easy way to make sure that we always
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents:
diff changeset
77 record info on the innermost section or function, whether section or
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents:
diff changeset
78 function. (To do this, we always need some sort of collusion between
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents:
diff changeset
79 profile and eval; this is one way.) */
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents:
diff changeset
80
3025
facf3239ba30 [xemacs-hg @ 2005-10-25 11:16:19 by ben]
ben
parents: 2514
diff changeset
81 /* Or, we could call xzero() to zero the whole thing, and avoid four
facf3239ba30 [xemacs-hg @ 2005-10-25 11:16:19 by ben]
ben
parents: 2514
diff changeset
82 of the statements below; or we could create a global backtrace object,
facf3239ba30 [xemacs-hg @ 2005-10-25 11:16:19 by ben]
ben
parents: 2514
diff changeset
83 uninitialized (i.e. it will be initialized to all 0), and do structure
facf3239ba30 [xemacs-hg @ 2005-10-25 11:16:19 by ben]
ben
parents: 2514
diff changeset
84 copy to initialize. It's not clear it will make much difference here,
facf3239ba30 [xemacs-hg @ 2005-10-25 11:16:19 by ben]
ben
parents: 2514
diff changeset
85 but someone who really cared about counting cycles could implement it. */
1292
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents:
diff changeset
86 #define PROFILE_RECORD_ENTERING_SECTION(var) \
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents:
diff changeset
87 do \
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents:
diff changeset
88 { \
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents:
diff changeset
89 if (do_backtrace) \
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents:
diff changeset
90 { \
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents:
diff changeset
91 backtrace.function = &var; \
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents:
diff changeset
92 backtrace.args = NULL; \
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents:
diff changeset
93 backtrace.nargs = UNEVALLED; \
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents:
diff changeset
94 backtrace.evalargs = 0; \
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents:
diff changeset
95 backtrace.pdlcount = specpdl_depth (); \
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents:
diff changeset
96 backtrace.debug_on_exit = 0; \
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents:
diff changeset
97 backtrace.function_being_called = 0; \
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents:
diff changeset
98 PUSH_BACKTRACE (backtrace); \
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents:
diff changeset
99 } \
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents:
diff changeset
100 PROFILE_ENTER_FUNCTION (); \
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents:
diff changeset
101 } while (0)
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents:
diff changeset
102
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents:
diff changeset
103 #define PROFILE_RECORD_EXITING_SECTION(var) \
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents:
diff changeset
104 do \
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents:
diff changeset
105 { \
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents:
diff changeset
106 PROFILE_EXIT_FUNCTION (); \
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents:
diff changeset
107 if (do_backtrace) \
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents:
diff changeset
108 POP_BACKTRACE (backtrace); \
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents:
diff changeset
109 } while (0)
2514
b49d38bc659d [xemacs-hg @ 2005-01-26 10:09:19 by ben]
ben
parents: 1292
diff changeset
110
b49d38bc659d [xemacs-hg @ 2005-01-26 10:09:19 by ben]
ben
parents: 1292
diff changeset
111 #define RETURN_EXIT_PROFILING(tag, type, expr) \
b49d38bc659d [xemacs-hg @ 2005-01-26 10:09:19 by ben]
ben
parents: 1292
diff changeset
112 do \
b49d38bc659d [xemacs-hg @ 2005-01-26 10:09:19 by ben]
ben
parents: 1292
diff changeset
113 { \
b49d38bc659d [xemacs-hg @ 2005-01-26 10:09:19 by ben]
ben
parents: 1292
diff changeset
114 type _ret_exitpr_ = (expr); \
b49d38bc659d [xemacs-hg @ 2005-01-26 10:09:19 by ben]
ben
parents: 1292
diff changeset
115 PROFILE_RECORD_EXITING_SECTION (tag); \
b49d38bc659d [xemacs-hg @ 2005-01-26 10:09:19 by ben]
ben
parents: 1292
diff changeset
116 RETURN_SANS_WARNINGS _ret_exitpr_; \
b49d38bc659d [xemacs-hg @ 2005-01-26 10:09:19 by ben]
ben
parents: 1292
diff changeset
117 } while (0)
b49d38bc659d [xemacs-hg @ 2005-01-26 10:09:19 by ben]
ben
parents: 1292
diff changeset
118
b49d38bc659d [xemacs-hg @ 2005-01-26 10:09:19 by ben]
ben
parents: 1292
diff changeset
119 #define RETURN_LISP_EXIT_PROFILING(tag, expr) \
b49d38bc659d [xemacs-hg @ 2005-01-26 10:09:19 by ben]
ben
parents: 1292
diff changeset
120 RETURN_EXIT_PROFILING (tag, Lisp_Object, expr)
b49d38bc659d [xemacs-hg @ 2005-01-26 10:09:19 by ben]
ben
parents: 1292
diff changeset
121
b49d38bc659d [xemacs-hg @ 2005-01-26 10:09:19 by ben]
ben
parents: 1292
diff changeset
122 #define RETURN_UNGCPRO_EXIT_PROFILING(tag, expr) \
3282
390dee4913ba [xemacs-hg @ 2006-03-14 19:31:41 by james]
james
parents: 3025
diff changeset
123 do \
2514
b49d38bc659d [xemacs-hg @ 2005-01-26 10:09:19 by ben]
ben
parents: 1292
diff changeset
124 { \
b49d38bc659d [xemacs-hg @ 2005-01-26 10:09:19 by ben]
ben
parents: 1292
diff changeset
125 Lisp_Object ret_ungc_val = (expr); \
b49d38bc659d [xemacs-hg @ 2005-01-26 10:09:19 by ben]
ben
parents: 1292
diff changeset
126 UNGCPRO; \
b49d38bc659d [xemacs-hg @ 2005-01-26 10:09:19 by ben]
ben
parents: 1292
diff changeset
127 PROFILE_RECORD_EXITING_SECTION (tag); \
b49d38bc659d [xemacs-hg @ 2005-01-26 10:09:19 by ben]
ben
parents: 1292
diff changeset
128 RETURN_SANS_WARNINGS ret_ungc_val; \
b49d38bc659d [xemacs-hg @ 2005-01-26 10:09:19 by ben]
ben
parents: 1292
diff changeset
129 } while (0)
b49d38bc659d [xemacs-hg @ 2005-01-26 10:09:19 by ben]
ben
parents: 1292
diff changeset
130
b49d38bc659d [xemacs-hg @ 2005-01-26 10:09:19 by ben]
ben
parents: 1292
diff changeset
131 #ifdef DEBUG_XEMACS
b49d38bc659d [xemacs-hg @ 2005-01-26 10:09:19 by ben]
ben
parents: 1292
diff changeset
132 extern Lisp_Object QSin_temp_spot_1;
b49d38bc659d [xemacs-hg @ 2005-01-26 10:09:19 by ben]
ben
parents: 1292
diff changeset
133 extern Lisp_Object QSin_temp_spot_2;
b49d38bc659d [xemacs-hg @ 2005-01-26 10:09:19 by ben]
ben
parents: 1292
diff changeset
134 extern Lisp_Object QSin_temp_spot_3;
b49d38bc659d [xemacs-hg @ 2005-01-26 10:09:19 by ben]
ben
parents: 1292
diff changeset
135 extern Lisp_Object QSin_temp_spot_4;
b49d38bc659d [xemacs-hg @ 2005-01-26 10:09:19 by ben]
ben
parents: 1292
diff changeset
136 extern Lisp_Object QSin_temp_spot_5;
b49d38bc659d [xemacs-hg @ 2005-01-26 10:09:19 by ben]
ben
parents: 1292
diff changeset
137 #endif /* DEBUG_XEMACS */