diff options
author | Ömer Sinan Ağacan <omeragacan@gmail.com> | 2016-06-10 07:13:47 -0400 |
---|---|---|
committer | Ömer Sinan Ağacan <omeragacan@gmail.com> | 2016-06-10 07:14:00 -0400 |
commit | 47d81732022e0327f7a5798898b40d1f1bdbb157 (patch) | |
tree | 40fbb17092397c1a07f54d519a7848f600fcc68b /rts | |
parent | b0a76643e979a2e5198875a9c99f5f625f318668 (diff) | |
download | haskell-47d81732022e0327f7a5798898b40d1f1bdbb157.tar.gz |
Remove Printer.c:prettyPrintClosure()
It turns out this function was unused and broken for a long time (fixed
with b0a7664). Removing it as it will probably get broken again in the
future and it's unused.
Reviewers: austin, erikd, simonmar, nomeata, bgamari
Reviewed By: nomeata, bgamari
Subscribers: Phyx, thomie, nomeata
Differential Revision: https://phabricator.haskell.org/D2322
Diffstat (limited to 'rts')
-rw-r--r-- | rts/Printer.c | 81 | ||||
-rw-r--r-- | rts/Printer.h | 1 |
2 files changed, 0 insertions, 82 deletions
diff --git a/rts/Printer.c b/rts/Printer.c index a6f26c2262..1ee1c6c4b3 100644 --- a/rts/Printer.c +++ b/rts/Printer.c @@ -785,87 +785,6 @@ findPtr(P_ p, int follow) } } -/* prettyPrintClosure() is for printing out a closure using the data constructor - names found in the info tables. Closures are printed in a fashion that resembles - their Haskell representation. Useful during debugging. - - Todo: support for more closure types, and support for non pointer fields in the - payload. -*/ - -void prettyPrintClosure_ (const StgClosure *); - -void prettyPrintClosure (const StgClosure *obj) -{ - prettyPrintClosure_ (obj); - debugBelch ("\n"); -} - -void prettyPrintClosure_ (const StgClosure *obj) -{ - const StgInfoTable *info; - - obj = UNTAG_CONST_CLOSURE(obj); - - /* collapse any indirections */ - unsigned int type; - type = get_itbl(obj)->type; - - while (type == IND || - type == IND_STATIC) - { - obj = ((StgInd *)obj)->indirectee; - type = get_itbl(obj)->type; - } - - /* find the info table for this object */ - info = get_itbl(obj); - - /* determine what kind of object we have */ - switch (info->type) - { - /* full applications of data constructors */ - case CONSTR: - case CONSTR_1_0: - case CONSTR_0_1: - case CONSTR_1_1: - case CONSTR_0_2: - case CONSTR_2_0: - case CONSTR_STATIC: - case CONSTR_NOCAF_STATIC: - { - const StgConInfoTable *con_info; - const char *descriptor; - uint32_t i; - - /* find the con_info for the constructor */ - con_info = get_con_itbl (obj); - - /* obtain the name of the constructor */ - descriptor = GET_CON_DESC(con_info); - - debugBelch ("(%s", descriptor); - - /* process the payload of the closure */ - /* we don't handle non pointers at the moment */ - for (i = 0; i < info->layout.payload.ptrs; i++) - { - debugBelch (" "); - prettyPrintClosure_ ((StgClosure *) obj->payload[i]); - } - debugBelch (")"); - break; - } - - /* if it isn't a constructor then just print the closure type */ - default: - { - debugBelch ("<%s>", info_type(obj)); - break; - } - } -} - const char *what_next_strs[] = { [0] = "(unknown)", [ThreadRunGHC] = "ThreadRunGHC", diff --git a/rts/Printer.h b/rts/Printer.h index bd2db35aeb..4db76057be 100644 --- a/rts/Printer.h +++ b/rts/Printer.h @@ -22,7 +22,6 @@ const char * info_type_by_ip ( const StgInfoTable *ip ); const char * info_update_frame ( const StgClosure *closure ); #ifdef DEBUG -extern void prettyPrintClosure (const StgClosure *obj); extern void printClosure ( const StgClosure *obj ); extern void printStackChunk ( StgPtr sp, StgPtr spLim ); extern void printTSO ( StgTSO *tso ); |