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