| Index: src/compiler/simplified-lowering.cc
|
| diff --git a/src/compiler/simplified-lowering.cc b/src/compiler/simplified-lowering.cc
|
| index 9a880dbb2e181c6cab8bcdf560750364b4929eb4..36cec4fa0b28b6bc36cdf82ee7bbf0fda6f49b03 100644
|
| --- a/src/compiler/simplified-lowering.cc
|
| +++ b/src/compiler/simplified-lowering.cc
|
| @@ -25,8 +25,10 @@ namespace internal {
|
| namespace compiler {
|
|
|
| // Macro for outputting trace information from representation inference.
|
| -#define TRACE(x) \
|
| - if (FLAG_trace_representation) PrintF x
|
| +#define TRACE(...) \
|
| + do { \
|
| + if (FLAG_trace_representation) PrintF(__VA_ARGS__); \
|
| + } while (false)
|
|
|
| // Representation selection and lowering of {Simplified} operators to machine
|
| // operators are interwined. We use a fixpoint calculation to compute both the
|
| @@ -85,7 +87,7 @@ class RepresentationSelector {
|
|
|
| void Run(SimplifiedLowering* lowering) {
|
| // Run propagation phase to a fixpoint.
|
| - TRACE(("--{Propagation phase}--\n"));
|
| + TRACE("--{Propagation phase}--\n");
|
| phase_ = PROPAGATE;
|
| Enqueue(jsgraph_->graph()->end());
|
| // Process nodes from the queue until it is empty.
|
| @@ -94,20 +96,20 @@ class RepresentationSelector {
|
| NodeInfo* info = GetInfo(node);
|
| queue_.pop();
|
| info->queued = false;
|
| - TRACE((" visit #%d: %s\n", node->id(), node->op()->mnemonic()));
|
| + TRACE(" visit #%d: %s\n", node->id(), node->op()->mnemonic());
|
| VisitNode(node, info->use, NULL);
|
| - TRACE((" ==> output "));
|
| + TRACE(" ==> output ");
|
| PrintInfo(info->output);
|
| - TRACE(("\n"));
|
| + TRACE("\n");
|
| }
|
|
|
| // Run lowering and change insertion phase.
|
| - TRACE(("--{Simplified lowering phase}--\n"));
|
| + TRACE("--{Simplified lowering phase}--\n");
|
| phase_ = LOWER;
|
| // Process nodes from the collected {nodes_} vector.
|
| for (NodeVector::iterator i = nodes_.begin(); i != nodes_.end(); ++i) {
|
| Node* node = *i;
|
| - TRACE((" visit #%d: %s\n", node->id(), node->op()->mnemonic()));
|
| + TRACE(" visit #%d: %s\n", node->id(), node->op()->mnemonic());
|
| // Reuse {VisitNode()} so the representation rules are in one place.
|
| if (FLAG_turbo_source_positions) {
|
| SourcePositionTable::Scope scope(
|
| @@ -143,21 +145,21 @@ class RepresentationSelector {
|
| info->queued = true;
|
| nodes_.push_back(node);
|
| queue_.push(node);
|
| - TRACE((" initial: "));
|
| + TRACE(" initial: ");
|
| info->use |= use;
|
| PrintUseInfo(node);
|
| return;
|
| }
|
| - TRACE((" queue?: "));
|
| + TRACE(" queue?: ");
|
| PrintUseInfo(node);
|
| if ((info->use & use) != use) {
|
| // New usage information for the node is available.
|
| if (!info->queued) {
|
| queue_.push(node);
|
| info->queued = true;
|
| - TRACE((" added: "));
|
| + TRACE(" added: ");
|
| } else {
|
| - TRACE((" inqueue: "));
|
| + TRACE(" inqueue: ");
|
| }
|
| info->use |= use;
|
| PrintUseInfo(node);
|
| @@ -195,14 +197,14 @@ class RepresentationSelector {
|
| MachineTypeUnion output = GetInfo(input)->output;
|
| if ((output & (kRepBit | kRepWord8 | kRepWord16 | kRepWord32)) == 0) {
|
| // Output representation doesn't match usage.
|
| - TRACE((" truncate-to-int32: #%d:%s(@%d #%d:%s) ", node->id(),
|
| - node->op()->mnemonic(), index, input->id(),
|
| - input->op()->mnemonic()));
|
| - TRACE((" from "));
|
| + TRACE(" truncate-to-int32: #%d:%s(@%d #%d:%s) ", node->id(),
|
| + node->op()->mnemonic(), index, input->id(),
|
| + input->op()->mnemonic());
|
| + TRACE(" from ");
|
| PrintInfo(output);
|
| - TRACE((" to "));
|
| + TRACE(" to ");
|
| PrintInfo(use);
|
| - TRACE(("\n"));
|
| + TRACE("\n");
|
| Node* n = changer_->GetTruncatedWord32For(input, output);
|
| node->ReplaceInput(index, n);
|
| }
|
| @@ -220,14 +222,14 @@ class RepresentationSelector {
|
| MachineTypeUnion output = GetInfo(input)->output;
|
| if ((output & kRepMask & use) == 0) {
|
| // Output representation doesn't match usage.
|
| - TRACE((" change: #%d:%s(@%d #%d:%s) ", node->id(),
|
| - node->op()->mnemonic(), index, input->id(),
|
| - input->op()->mnemonic()));
|
| - TRACE((" from "));
|
| + TRACE(" change: #%d:%s(@%d #%d:%s) ", node->id(),
|
| + node->op()->mnemonic(), index, input->id(),
|
| + input->op()->mnemonic());
|
| + TRACE(" from ");
|
| PrintInfo(output);
|
| - TRACE((" to "));
|
| + TRACE(" to ");
|
| PrintInfo(use);
|
| - TRACE(("\n"));
|
| + TRACE("\n");
|
| Node* n = changer_->GetRepresentationFor(input, output, use);
|
| node->ReplaceInput(index, n);
|
| }
|
| @@ -1049,11 +1051,10 @@ class RepresentationSelector {
|
| }
|
|
|
| void DeferReplacement(Node* node, Node* replacement) {
|
| - if (FLAG_trace_representation) {
|
| - TRACE(("defer replacement #%d:%s with #%d:%s\n", node->id(),
|
| - node->op()->mnemonic(), replacement->id(),
|
| - replacement->op()->mnemonic()));
|
| - }
|
| + TRACE("defer replacement #%d:%s with #%d:%s\n", node->id(),
|
| + node->op()->mnemonic(), replacement->id(),
|
| + replacement->op()->mnemonic());
|
| +
|
| if (replacement->id() < count_ &&
|
| GetInfo(replacement)->output == GetInfo(node)->output) {
|
| // Replace with a previously existing node eagerly only if the type is the
|
| @@ -1071,9 +1072,9 @@ class RepresentationSelector {
|
| }
|
|
|
| void PrintUseInfo(Node* node) {
|
| - TRACE(("#%d:%-20s ", node->id(), node->op()->mnemonic()));
|
| + TRACE("#%d:%-20s ", node->id(), node->op()->mnemonic());
|
| PrintInfo(GetUseInfo(node));
|
| - TRACE(("\n"));
|
| + TRACE("\n");
|
| }
|
|
|
| void PrintInfo(MachineTypeUnion info) {
|
|
|