Commit 8cf8806d authored by Luuk van Dijk's avatar Luuk van Dijk

gc: some enhancements to printing debug info.

R=rsc
CC=golang-dev
https://golang.org/cl/4710046
parent e1b2e202
......@@ -404,6 +404,7 @@ exprfmt(Fmt *f, Node *n, int prec)
case OCONVIFACE:
case OCONVNOP:
case OARRAYBYTESTR:
case OSTRARRAYBYTE:
case ORUNESTR:
if(n->type == T || n->type->sym == S)
fmtprint(f, "(%T)(", n->type);
......@@ -445,8 +446,28 @@ exprfmt(Fmt *f, Node *n, int prec)
break;
case OMAKEMAP:
case OMAKECHAN:
fmtprint(f, "make(%#T)", n->type);
break;
// Some statements
case ODCL:
fmtprint(f, "var %S %#T", n->left->sym, n->left->type);
break;
case ORETURN:
fmtprint(f, "return ");
exprlistfmt(f, n->list);
break;
case OPROC:
fmtprint(f, "go %#N", n->left);
break;
case ODEFER:
fmtprint(f, "defer %#N", n->left);
break;
}
if(prec > nprec)
......
......@@ -1049,21 +1049,25 @@ Jconv(Fmt *fp)
{
Node *n;
char *s;
int c;
n = va_arg(fp->args, Node*);
if(n->ullman != 0)
c = fp->flags&FmtShort;
if(!c && n->ullman != 0)
fmtprint(fp, " u(%d)", n->ullman);
if(n->addable != 0)
if(!c && n->addable != 0)
fmtprint(fp, " a(%d)", n->addable);
if(n->vargen != 0)
if(!c && n->vargen != 0)
fmtprint(fp, " g(%d)", n->vargen);
if(n->lineno != 0)
fmtprint(fp, " l(%d)", n->lineno);
if(n->xoffset != BADWIDTH)
if(!c && n->xoffset != BADWIDTH)
fmtprint(fp, " x(%lld%+d)", n->xoffset, n->stkdelta);
if(n->class != 0) {
......@@ -1081,10 +1085,13 @@ Jconv(Fmt *fp)
if(n->funcdepth != 0)
fmtprint(fp, " f(%d)", n->funcdepth);
if(n->typecheck != 0)
if(n->noescape != 0)
fmtprint(fp, " ne(%d)", n->noescape);
if(!c && n->typecheck != 0)
fmtprint(fp, " tc(%d)", n->typecheck);
if(n->dodata != 0)
if(!c && n->dodata != 0)
fmtprint(fp, " dd(%d)", n->dodata);
if(n->isddd != 0)
......@@ -1093,10 +1100,10 @@ Jconv(Fmt *fp)
if(n->implicit != 0)
fmtprint(fp, " implicit(%d)", n->implicit);
if(n->pun != 0)
if(!c && n->pun != 0)
fmtprint(fp, " pun(%d)", n->pun);
if(n->used != 0)
if(!c && n->used != 0)
fmtprint(fp, " used(%d)", n->used);
return 0;
}
......@@ -1494,17 +1501,25 @@ Nconv(Fmt *fp)
switch(n->op) {
default:
fmtprint(fp, "%O%J", n->op, n);
if (fp->flags & FmtShort)
fmtprint(fp, "%O%hJ", n->op, n);
else
fmtprint(fp, "%O%J", n->op, n);
break;
case ONAME:
case ONONAME:
if(n->sym == S) {
fmtprint(fp, "%O%J", n->op, n);
if (fp->flags & FmtShort)
fmtprint(fp, "%O%hJ", n->op, n);
else
fmtprint(fp, "%O%J", n->op, n);
break;
}
fmtprint(fp, "%O-%S G%d%J", n->op,
n->sym, n->vargen, n);
if (fp->flags & FmtShort)
fmtprint(fp, "%O-%S%hJ", n->op, n->sym, n);
else
fmtprint(fp, "%O-%S%J", n->op, n->sym, n);
goto ptyp;
case OREGISTER:
......
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