Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
Glasgow Haskell Compiler
GHC
Commits
1e295cef
Commit
1e295cef
authored
Jun 24, 1999
by
simonmar
Browse files
[project @ 1999-06-24 13:10:31 by simonmar]
Reinstate per-function entry counts in ticky-ticky profiles.
parent
20bb5255
Changes
2
Hide whitespace changes
Inline
Side-by-side
ghc/includes/StgTicky.h
View file @
1e295cef
/* ----------------------------------------------------------------------------
* $Id: StgTicky.h,v 1.
4
1999/0
5/11 16:47:42 keithw
Exp $
* $Id: StgTicky.h,v 1.
5
1999/0
6/24 13:10:31 simonmar
Exp $
*
* (c) The AQUA project, Glasgow University, 1994-1997
* (c) The GHC Team, 1998-1999
...
...
@@ -126,7 +126,37 @@
#define TICK_ENT_THK() ENT_THK_ctr++
/* thunk */
#define TICK_ENT_FUN_STD() ENT_FUN_STD_ctr++
/* std entry pt */
#define TICK_ENT_FUN_DIRECT(n) ENT_FUN_DIRECT_ctr++
/* fast entry pt */
struct
ent_counter
{
unsigned
registeredp
:
16
,
/* 0 == no, 1 == yes */
arity:
16
,
/* arity (static info) */
stk_args:
16
;
/* # of args off stack */
/* (rest of args are in registers) */
StgChar
*
f_str
;
/* name of the thing */
StgChar
*
f_arg_kinds
;
/* info about the args types */
I_
ctr
;
/* the actual counter */
struct
ent_counter
*
link
;
/* link to chain them all together */
};
#define TICK_ENT_FUN_DIRECT(f_ct, f_str, f_arity, f_args, f_arg_kinds) \
{ \
static struct ent_counter f_ct \
= { 0, \
(f_arity), (f_args), (f_str), (f_arg_kinds), \
0, NULL }; \
if ( ! f_ct.registeredp ) { \
/* hook this one onto the front of the list */
\
f_ct.link = ticky_entry_ctrs; \
ticky_entry_ctrs = & (f_ct); \
\
/* mark it as "registered" */
\
f_ct.registeredp = 1; \
} \
f_ct.ctr += 1; \
} \
ENT_FUN_DIRECT_ctr++
/* the old boring one */
extern
struct
ent_counter
*
ticky_entry_ctrs
;
#define TICK_ENT_CON(n) ENT_CON_ctr++
/* enter constructor */
#define TICK_ENT_IND(n) ENT_IND_ctr++
/* enter indirection */
...
...
ghc/rts/Ticky.c
View file @
1e295cef
/* -----------------------------------------------------------------------------
* $Id: Ticky.c,v 1.
7
1999/0
5/11 16:49:44 keithw
Exp $
* $Id: Ticky.c,v 1.
8
1999/0
6/24 13:10:32 simonmar
Exp $
*
* (c) The AQUA project, Glasgow University, 1992-1997
* (c) The GHC Team, 1998-1999
...
...
@@ -272,9 +272,7 @@ PrintTickyInfo(void)
fprintf
(
tf
,
"
\n
Total bytes copied during GC: %ld
\n
"
,
GC_WORDS_COPIED_ctr
*
sizeof
(
W_
));
#if 0
printRegisteredCounterInfo
(
tf
);
#endif
fprintf
(
tf
,
"
\n
**************************************************
\n
"
);
...
...
@@ -534,10 +532,9 @@ PrintTickyInfo(void)
PR_CTR
(
GC_WORDS_COPIED_ctr
);
}
#if 0
/* Data structure used in ``registering'' one of these counters. */
struct ent_counter *
ListOfE
ntry
C
trs = NULL; /* root of list of them */
struct
ent_counter
*
ticky_e
ntry
_c
trs
=
NULL
;
/* root of list of them */
/* To print out all the registered-counter info: */
...
...
@@ -546,31 +543,22 @@ printRegisteredCounterInfo (FILE *tf)
{
struct
ent_counter
*
p
;
if (
ListOfE
ntry
C
trs != NULL ) {
if
(
ticky_e
ntry
_c
trs
!=
NULL
)
{
fprintf
(
tf
,
"
\n
**************************************************
\n
"
);
}
for (p = ListOfEntryCtrs; p != NULL; p = p->link) {
/* common stuff first; then the wrapper info if avail */
fprintf(tf, "%-40s%u\t%u\t%u\t%-16s%ld",
for
(
p
=
ticky_entry_ctrs
;
p
!=
NULL
;
p
=
p
->
link
)
{
fprintf
(
tf
,
"%-40s%u
\t
%u
\t
%-16s%ld"
,
p
->
f_str
,
p
->
arity
,
p->Astk_args,
p->Bstk_args,
p
->
stk_args
,
p
->
f_arg_kinds
,
p
->
ctr
);
if ( p->wrap_str == NULL ) {
fprintf(tf, "\n");
fprintf
(
tf
,
"
\n
"
);
} else {
fprintf(tf, "\t%s\t%s\n",
p->wrap_str,
p->wrap_arg_kinds);
}
}
}
#endif
#endif
/* TICKY_TICKY */
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment