diff options
author | Ulrich Drepper <drepper@redhat.com> | 2002-08-29 09:27:23 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2002-08-29 09:27:23 +0000 |
commit | a363f8a4262fd3efb357ec6a2526dcecae3de25d (patch) | |
tree | c4da234c6fd2ed7769275300770136d7608007a0 | |
parent | 86ad5f0cf575cec046aa6e39184f9a49a7c823f3 (diff) | |
download | glibc-a363f8a4262fd3efb357ec6a2526dcecae3de25d.zip glibc-a363f8a4262fd3efb357ec6a2526dcecae3de25d.tar.gz glibc-a363f8a4262fd3efb357ec6a2526dcecae3de25d.tar.bz2 |
(ARCDENSITY): Bump to 3. Define ARCINDEX. Bump MAXARCS to 1 << 20. (struct tostruct): Use ACRINDEX as type for link field. (statuc gmonparam): Likewise for froms.
-rw-r--r-- | gmon/sys/gmon.h | 42 |
1 files changed, 34 insertions, 8 deletions
diff --git a/gmon/sys/gmon.h b/gmon/sys/gmon.h index c9064d7..c02f831 100644 --- a/gmon/sys/gmon.h +++ b/gmon/sys/gmon.h @@ -96,17 +96,43 @@ extern struct __bb *__bb_head; #define HASHFRACTION 2 /* - * percent of text space to allocate for tostructs with a minimum. + * Percent of text space to allocate for tostructs. + * This is a heuristic; we will fail with a warning when profiling programs + * with a very large number of very small functions, but that's + * normally OK. + * 2 is probably still a good value for normal programs. + * Profiling a test case with 64000 small functions will work if + * you raise this value to 3 and link statically (which bloats the + * text size, thus raising the number of arcs expected by the heuristic). + */ +#define ARCDENSITY 3 + +/* + * Always allocate at least this many tostructs. This + * hides the inadequacy of the ARCDENSITY heuristic, at least + * for small programs. */ -#define ARCDENSITY 2 #define MINARCS 50 -#define MAXARCS ((1 << (8 * sizeof(HISTCOUNTER))) - 2) + +/* + * The type used to represent indices into gmonparam.tos[]. + */ +#define ARCINDEX u_long + +/* + * Maximum number of arcs we want to allow. + * Used to be max representable value of ARCINDEX minus 2, but now + * that ARCINDEX is a long, that's too large; we don't really want + * to allow a 48 gigabyte table. + * The old value of 1<<16 wasn't high enough in practice for large C++ + * programs; will 1<<20 be adequate for long? FIXME + */ +#define MAXARCS (1 << 20) struct tostruct { - u_long selfpc; - long count; - u_short link; - u_short pad; + u_long selfpc; + long count; + ARCINDEX link; }; /* @@ -132,7 +158,7 @@ struct gmonparam { long int state; u_short *kcount; u_long kcountsize; - u_short *froms; + ARCINDEX *froms; u_long fromssize; struct tostruct *tos; u_long tossize; |