| Index: src/prettyprinter.cc
|
| diff --git a/src/prettyprinter.cc b/src/prettyprinter.cc
|
| index 6a7718a3233260223350f1e07b577f63b339ab78..9bc4e6a562866d6293cbaf4e76595c2bf9c0970d 100644
|
| --- a/src/prettyprinter.cc
|
| +++ b/src/prettyprinter.cc
|
| @@ -419,6 +419,18 @@ void CallPrinter::PrintLiteral(const AstRawString* value, bool quote) {
|
|
|
| #ifdef DEBUG
|
|
|
| +// A helper for ast nodes that use FeedbackVectorICSlots.
|
| +static int FormatICSlotNode(Vector<char>* buf, Expression* node,
|
| + const char* node_name, FeedbackVectorICSlot slot) {
|
| + int pos = SNPrintF(*buf, "%s", node_name);
|
| + if (!slot.IsInvalid()) {
|
| + const char* str = Code::Kind2String(node->FeedbackICSlotKind(0));
|
| + pos = SNPrintF(*buf + pos, " ICSlot(%d, %s)", slot.ToInt(), str);
|
| + }
|
| + return pos;
|
| +}
|
| +
|
| +
|
| PrettyPrinter::PrettyPrinter(Isolate* isolate, Zone* zone) {
|
| output_ = NULL;
|
| size_ = 0;
|
| @@ -1430,11 +1442,12 @@ void AstPrinter::VisitArrayLiteral(ArrayLiteral* node) {
|
| }
|
|
|
|
|
| -// TODO(svenpanne) Start with IndentedScope.
|
| void AstPrinter::VisitVariableProxy(VariableProxy* node) {
|
| Variable* var = node->var();
|
| EmbeddedVector<char, 128> buf;
|
| - int pos = SNPrintF(buf, "VAR PROXY");
|
| + int pos =
|
| + FormatICSlotNode(&buf, node, "VAR PROXY", node->VariableFeedbackSlot());
|
| +
|
| switch (var->location()) {
|
| case VariableLocation::UNALLOCATED:
|
| break;
|
| @@ -1478,7 +1491,10 @@ void AstPrinter::VisitThrow(Throw* node) {
|
|
|
|
|
| void AstPrinter::VisitProperty(Property* node) {
|
| - IndentedScope indent(this, "PROPERTY");
|
| + EmbeddedVector<char, 128> buf;
|
| + FormatICSlotNode(&buf, node, "PROPERTY", node->PropertyFeedbackSlot());
|
| + IndentedScope indent(this, buf.start());
|
| +
|
| Visit(node->obj());
|
| Literal* literal = node->key()->AsLiteral();
|
| if (literal != NULL && literal->value()->IsInternalizedString()) {
|
| @@ -1490,7 +1506,10 @@ void AstPrinter::VisitProperty(Property* node) {
|
|
|
|
|
| void AstPrinter::VisitCall(Call* node) {
|
| - IndentedScope indent(this, "CALL");
|
| + EmbeddedVector<char, 128> buf;
|
| + FormatICSlotNode(&buf, node, "CALL", node->CallFeedbackICSlot());
|
| + IndentedScope indent(this, buf.start());
|
| +
|
| Visit(node->expression());
|
| PrintArguments(node->arguments());
|
| }
|
| @@ -1504,7 +1523,9 @@ void AstPrinter::VisitCallNew(CallNew* node) {
|
|
|
|
|
| void AstPrinter::VisitCallRuntime(CallRuntime* node) {
|
| - IndentedScope indent(this, "CALL RUNTIME");
|
| + EmbeddedVector<char, 128> buf;
|
| + FormatICSlotNode(&buf, node, "CALL RUNTIME", node->CallRuntimeFeedbackSlot());
|
| + IndentedScope indent(this, buf.start());
|
| PrintLiteralIndented("NAME", node->name(), false);
|
| PrintArguments(node->arguments());
|
| }
|
|
|