Commit 47d81732 authored by Ömer Sinan Ağacan's avatar Ömer Sinan Ağacan
Browse files

Remove Printer.c:prettyPrintClosure()

It turns out this function was unused and broken for a long time (fixed
with b0a76643). 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
parent b0a76643
......@@ -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",
......
......@@ -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 );
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment