summaryrefslogtreecommitdiff
path: root/rts
diff options
context:
space:
mode:
authorandy@galois.com <unknown>2007-06-27 06:36:31 +0000
committerandy@galois.com <unknown>2007-06-27 06:36:31 +0000
commit5487e2226dac7574d951dce900176fc01efa4582 (patch)
tree743d57258638d84e8ff4e976a2fcdf21d963c298 /rts
parent9fde8e7e6e08680f2c6addc5f1ed2232db71b604 (diff)
downloadhaskell-5487e2226dac7574d951dce900176fc01efa4582.tar.gz
Cleaning up Hpc.c; adding support for reflection into Hpc.
Diffstat (limited to 'rts')
-rw-r--r--rts/Hpc.c21
1 files changed, 9 insertions, 12 deletions
diff --git a/rts/Hpc.c b/rts/Hpc.c
index 7ad2666228..ebd5af15d1 100644
--- a/rts/Hpc.c
+++ b/rts/Hpc.c
@@ -22,21 +22,10 @@
*
*/
-#define WOP_SIZE 1024
-
static int hpc_inited = 0; // Have you started this component?
static FILE *tixFile; // file being read/written
static int tix_ch; // current char
-typedef struct _HpcModuleInfo {
- char *modName; // name of module
- int tickCount; // number of ticks
- int tickOffset; // offset into a single large .tix Array
- int hashNo; // Hash number for this module's mix info
- StgWord64 *tixArr; // tix Array from the program execution (local for this module)
- struct _HpcModuleInfo *next;
-} HpcModuleInfo;
-
// This is a cruel hack, we should completely redesign the format specifier handling in the RTS.
#if SIZEOF_LONG == 8
#define PRIuWORD64 "lu"
@@ -50,6 +39,9 @@ int totalTixes = 0; // total number of tix boxes.
static char *tixFilename;
+void hs_hpc_read(char *filename);
+void hs_hpc_write(char *filename);
+
static void failure(char *msg) {
debugTrace(DEBUG_hpc,"hpc failure: %s\n",msg);
fprintf(stderr,"Hpc failure: %s\n",msg);
@@ -371,5 +363,10 @@ void hs_hpc_write(char *filename) {
writeTix(fopen(filename,"w"));
}
+//////////////////////////////////////////////////////////////////////////////
+// This is the API into Hpc RTS from Haskell, allowing the tixs boxes
+// to be first class.
-
+HpcModuleInfo *hs_hpc_rootModule(void) {
+ return modules;
+}