Improved pretty printing of VAR PROXY and some control flow AST nodes.

Review URL: http://codereview.chromium.org/7866041

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9245 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
This commit is contained in:
svenpanne@chromium.org 2011-09-12 14:00:16 +00:00
parent db2bac3847
commit 130b9d7858

View File

@ -633,17 +633,14 @@ void AstPrinter::PrintLiteralWithModeIndented(const char* info,
void AstPrinter::PrintLabelsIndented(const char* info, ZoneStringList* labels) {
if (labels != NULL && labels->length() > 0) {
if (info == NULL) {
PrintIndented("LABELS ");
} else {
PrintIndented(info);
Print(" ");
}
PrintIndented(info == NULL ? "LABELS" : info);
Print(" ");
PrintLabels(labels);
Print("\n");
} else if (info != NULL) {
PrintIndented(info);
Print("\n");
}
Print("\n");
}
@ -929,25 +926,25 @@ void AstPrinter::VisitArrayLiteral(ArrayLiteral* node) {
void AstPrinter::VisitVariableProxy(VariableProxy* node) {
Variable* var = node->var();
PrintLiteralWithModeIndented("VAR PROXY", var, node->name());
{ IndentedScope indent(this);
switch (var->location()) {
case Variable::UNALLOCATED:
break;
case Variable::PARAMETER:
Print("parameter[%d]", var->index());
break;
case Variable::LOCAL:
Print("local[%d]", var->index());
break;
case Variable::CONTEXT:
Print("context[%d]", var->index());
break;
case Variable::LOOKUP:
Print("lookup");
break;
}
EmbeddedVector<char, 128> buf;
int pos = OS::SNPrintF(buf, "VAR PROXY");
switch (var->location()) {
case Variable::UNALLOCATED:
break;
case Variable::PARAMETER:
OS::SNPrintF(buf + pos, " parameter[%d]", var->index());
break;
case Variable::LOCAL:
OS::SNPrintF(buf + pos, " local[%d]", var->index());
break;
case Variable::CONTEXT:
OS::SNPrintF(buf + pos, " context[%d]", var->index());
break;
case Variable::LOOKUP:
OS::SNPrintF(buf + pos, " lookup");
break;
}
PrintLiteralWithModeIndented(buf.start(), var, node->name());
}