| Index: src/hydrogen.cc
|
| ===================================================================
|
| --- src/hydrogen.cc (revision 8196)
|
| +++ src/hydrogen.cc (working copy)
|
| @@ -156,11 +156,8 @@
|
| ASSERT(!IsFinished());
|
| AddInstruction(end);
|
| end_ = end;
|
| - if (end->FirstSuccessor() != NULL) {
|
| - end->FirstSuccessor()->RegisterPredecessor(this);
|
| - if (end->SecondSuccessor() != NULL) {
|
| - end->SecondSuccessor()->RegisterPredecessor(this);
|
| - }
|
| + for (HSuccessorIterator it(end); it.HasNext(); it.Advance()) {
|
| + it.Next()->RegisterPredecessor(this);
|
| }
|
| }
|
|
|
| @@ -400,8 +397,9 @@
|
| void Analyze() {
|
| while (!stack_.is_empty()) {
|
| HControlInstruction* end = stack_.RemoveLast()->end();
|
| - PushBlock(end->FirstSuccessor());
|
| - PushBlock(end->SecondSuccessor());
|
| + for (HSuccessorIterator it(end); it.HasNext(); it.Advance()) {
|
| + PushBlock(it.Next());
|
| + }
|
| }
|
| }
|
|
|
| @@ -696,8 +694,9 @@
|
| HBasicBlock* loop_header) {
|
| for (int i = 0; i < loop->blocks()->length(); ++i) {
|
| HBasicBlock* b = loop->blocks()->at(i);
|
| - Postorder(b->end()->SecondSuccessor(), visited, order, loop_header);
|
| - Postorder(b->end()->FirstSuccessor(), visited, order, loop_header);
|
| + for (HSuccessorIterator it(b->end()); it.HasNext(); it.Advance()) {
|
| + Postorder(it.Next(), visited, order, loop_header);
|
| + }
|
| if (b->IsLoopHeader() && b != loop->loop_header()) {
|
| PostorderLoopBlocks(b->loop_information(), visited, order, loop_header);
|
| }
|
| @@ -714,11 +713,13 @@
|
| visited->Add(block->block_id());
|
| if (block->IsLoopHeader()) {
|
| PostorderLoopBlocks(block->loop_information(), visited, order, loop_header);
|
| - Postorder(block->end()->SecondSuccessor(), visited, order, block);
|
| - Postorder(block->end()->FirstSuccessor(), visited, order, block);
|
| + for (HSuccessorIterator it(block->end()); it.HasNext(); it.Advance()) {
|
| + Postorder(it.Next(), visited, order, block);
|
| + }
|
| } else {
|
| - Postorder(block->end()->SecondSuccessor(), visited, order, loop_header);
|
| - Postorder(block->end()->FirstSuccessor(), visited, order, loop_header);
|
| + for (HSuccessorIterator it(block->end()); it.HasNext(); it.Advance()) {
|
| + Postorder(it.Next(), visited, order, loop_header);
|
| + }
|
| }
|
| ASSERT(block->end()->FirstSuccessor() == NULL ||
|
| order->Contains(block->end()->FirstSuccessor()) ||
|
| @@ -6086,15 +6087,15 @@
|
| PrintEmptyProperty("predecessors");
|
| }
|
|
|
| - if (current->end() == NULL || current->end()->FirstSuccessor() == NULL) {
|
| + if (current->end()->SuccessorCount() == 0) {
|
| PrintEmptyProperty("successors");
|
| - } else if (current->end()->SecondSuccessor() == NULL) {
|
| - PrintBlockProperty("successors",
|
| - current->end()->FirstSuccessor()->block_id());
|
| - } else {
|
| - PrintBlockProperty("successors",
|
| - current->end()->FirstSuccessor()->block_id(),
|
| - current->end()->SecondSuccessor()->block_id());
|
| + } else {
|
| + PrintIndent();
|
| + trace_.Add("successors");
|
| + for (HSuccessorIterator it(current->end()); it.HasNext(); it.Advance()) {
|
| + trace_.Add(" \"B%d\"", it.Next()->block_id());
|
| + }
|
| + trace_.Add("\n");
|
| }
|
|
|
| PrintEmptyProperty("xhandlers");
|
|
|