comparison src/profile.c @ 2421:ab71ad6ff3dd

[xemacs-hg @ 2004-12-06 03:50:53 by ben] (none) README.packages: Document use of --package-prefix. Fix error in specifying standard package location. make-docfile.c: Use QXE_PATH_MAX. info.el: Correct doc string giving example package path. menubar-items.el: Move Prefix Rectangle command up one level. xemacs/packages.texi: Add long form of Lisp Reference Manual to links. Add links pointing to Lisp Reference Manual for more detailed package discussion. lispref/range-tables.texi: Document range-table changes. internals/internals.texi: Update history section. elhash.c, elhash.h, profile.c: Create inchash_eq() to allow direct incrementing of hash-table entry. Use in profile.c to try to reduce profiling overhead. Increase initial size of profile hash tables to reduce profiling overhead. buffer.c, device-msw.c, dialog-msw.c, dired-msw.c, editfns.c, event-msw.c, events.c, glyphs-msw.c, keymap.c, objects-msw.c, process-nt.c, syswindows.h, text.c, text.h, unexnt.c: Rename xetcs* -> qxetcs* for consistency with qxestr*. Rename ei*_c(_*) -> ei*_ascii(_*) since they work with ASCII-only strings not "C strings", whatever those are. This is the last place where "c" was incorrectly being used for "ascii". dialog-msw.c, dumper.c, event-msw.c, fileio.c, glyphs-gtk.c, glyphs-x.c, nt.c, process-nt.c, realpath.c, sysdep.c, sysfile.h, unexcw.c, unexnext.c, unexnt.c: Try to avoid differences in systems that do or do not include final null byte in PATH_MAX. Create PATH_MAX_INTERNAL and PATH_MAX_EXTERNAL and use them everywhere. Rewrite code in dumper.c to avoid use of PATH_MAX. When necessary in nt.c, use _MAX_PATH instead of MAX_PATH to be consistent with other places. text.c: Code to short-circuit when binary or Unicode was not working due to EOL wrapping. Fix this code to work when either no EOL autodetection or no CR's or LF's in the text. lisp.h, rangetab.c, rangetab.h, regex.c, search.c: Implement different types of ranges (open/closed start and end). Change default to be start-closed, end-open.
author ben
date Mon, 06 Dec 2004 03:52:23 +0000
parents ecf1ebac70d8
children b49d38bc659d
comparison
equal deleted inserted replaced
2420:ad56e5a6d09f 2421:ab71ad6ff3dd
126 create_profile_tables (void) 126 create_profile_tables (void)
127 { 127 {
128 create_timing_profile_table (); 128 create_timing_profile_table ();
129 if (NILP (Vtotal_timing_profile_table)) 129 if (NILP (Vtotal_timing_profile_table))
130 Vtotal_timing_profile_table = 130 Vtotal_timing_profile_table =
131 make_lisp_hash_table (100, HASH_TABLE_NON_WEAK, HASH_TABLE_EQ); 131 make_lisp_hash_table (1000, HASH_TABLE_NON_WEAK, HASH_TABLE_EQ);
132 if (NILP (Vcall_count_profile_table)) 132 if (NILP (Vcall_count_profile_table))
133 Vcall_count_profile_table = 133 Vcall_count_profile_table =
134 make_lisp_hash_table (100, HASH_TABLE_NON_WEAK, HASH_TABLE_EQ); 134 make_lisp_hash_table (1000, HASH_TABLE_NON_WEAK, HASH_TABLE_EQ);
135 if (NILP (Vgc_usage_profile_table)) 135 if (NILP (Vgc_usage_profile_table))
136 Vgc_usage_profile_table = 136 Vgc_usage_profile_table =
137 make_lisp_hash_table (100, HASH_TABLE_NON_WEAK, HASH_TABLE_EQ); 137 make_lisp_hash_table (1000, HASH_TABLE_NON_WEAK, HASH_TABLE_EQ);
138 if (NILP (Vtotal_gc_usage_profile_table)) 138 if (NILP (Vtotal_gc_usage_profile_table))
139 Vtotal_gc_usage_profile_table = 139 Vtotal_gc_usage_profile_table =
140 make_lisp_hash_table (100, HASH_TABLE_NON_WEAK, HASH_TABLE_EQ); 140 make_lisp_hash_table (1000, HASH_TABLE_NON_WEAK, HASH_TABLE_EQ);
141 } 141 }
142 142
143 static Lisp_Object 143 static Lisp_Object
144 current_profile_function (void) 144 current_profile_function (void)
145 { 145 {
176 } 176 }
177 177
178 void 178 void
179 profile_record_consing (EMACS_INT size) 179 profile_record_consing (EMACS_INT size)
180 { 180 {
181 Lisp_Object fun;
182 Lisp_Object count;
183
184 in_profiling++; 181 in_profiling++;
185 fun = current_profile_function (); 182 inchash_eq (current_profile_function (), Vgc_usage_profile_table, size);
186 count = Fgethash (fun, Vgc_usage_profile_table, Qzero);
187 Fputhash (fun, make_int (size + XINT (count)), Vgc_usage_profile_table);
188 in_profiling--; 183 in_profiling--;
189 } 184 }
190 185
191 void 186 void
192 profile_record_unconsing (EMACS_INT size) 187 profile_record_unconsing (EMACS_INT size)
226 in_profiling++; 221 in_profiling++;
227 profiling_lock = 1; 222 profiling_lock = 1;
228 /* See comments in create_timing_profile_table(). */ 223 /* See comments in create_timing_profile_table(). */
229 pregrow_hash_table_if_necessary (big_profile_table, EXTRA_BREATHING_ROOM); 224 pregrow_hash_table_if_necessary (big_profile_table, EXTRA_BREATHING_ROOM);
230 profiling_lock = 0; 225 profiling_lock = 0;
231 Fputhash (*bt->function, 226 inchash_eq (*bt->function, Vcall_count_profile_table, 1);
232 make_int (1 + XINT (Fgethash (*bt->function,
233 Vcall_count_profile_table,
234 Qzero))),
235 Vcall_count_profile_table);
236 /* This may be set if the function was in its preamble at the time that 227 /* This may be set if the function was in its preamble at the time that
237 `start-profiling' was called. If so, we shouldn't reset the values 228 `start-profiling' was called. If so, we shouldn't reset the values
238 because we may get inconsistent results, since we have already started 229 because we may get inconsistent results, since we have already started
239 recording ticks and consing for the function. */ 230 recording ticks and consing for the function. */
240 if (!bt->function_being_called) 231 if (!bt->function_being_called)