Index: test/cctest/compiler/test-osr.cc |
diff --git a/test/cctest/compiler/test-osr.cc b/test/cctest/compiler/test-osr.cc |
index 57b4ab1a5e64cb9fc9217b9d70f4b45e25724b30..c23fde6a001c2ff197087946c269ca810f1c2917 100644 |
--- a/test/cctest/compiler/test-osr.cc |
+++ b/test/cctest/compiler/test-osr.cc |
@@ -3,6 +3,7 @@ |
// found in the LICENSE file. |
#include "src/codegen.h" |
+#include "src/compiler/all-nodes.h" |
#include "src/compiler/common-operator.h" |
#include "src/compiler/diamond.h" |
#include "src/compiler/graph.h" |
@@ -112,6 +113,17 @@ class OsrDeconstructorTester : public HandleAndZoneScope { |
Node* NewOsrLoop(int num_backedges, Node* entry = NULL) { |
return NewLoop(true, num_backedges, entry); |
} |
+ |
+ void DeconstructOsr() { |
+ OsrHelper helper(0, 0); |
+ helper.Deconstruct(&jsgraph, &common, main_zone()); |
+ AllNodes nodes(main_zone(), &graph); |
+ // Should be edited out. |
+ CHECK(!nodes.IsLive(osr_normal_entry)); |
+ CHECK(!nodes.IsLive(osr_loop_entry)); |
+ // No dangling nodes should be left over. |
+ CHECK_EQ(0u, nodes.gray.size()); |
+ } |
}; |
@@ -122,8 +134,7 @@ TEST(Deconstruct_osr0) { |
T.graph.SetEnd(loop); |
- OsrHelper helper(0, 0); |
- helper.Deconstruct(&T.jsgraph, &T.common, T.main_zone()); |
+ T.DeconstructOsr(); |
CheckInputs(loop, T.start, loop); |
} |
@@ -139,8 +150,7 @@ TEST(Deconstruct_osr1) { |
Node* ret = T.graph.NewNode(T.common.Return(), osr_phi, T.start, loop); |
T.graph.SetEnd(ret); |
- OsrHelper helper(0, 0); |
- helper.Deconstruct(&T.jsgraph, &T.common, T.main_zone()); |
+ T.DeconstructOsr(); |
CheckInputs(loop, T.start, loop); |
CheckInputs(osr_phi, T.osr_values[0], T.jsgraph.ZeroConstant(), loop); |
@@ -160,18 +170,18 @@ TEST(Deconstruct_osr_remove_prologue) { |
Node* ret = T.graph.NewNode(T.common.Return(), osr_phi, T.start, loop); |
T.graph.SetEnd(ret); |
- OsrHelper helper(0, 0); |
- helper.Deconstruct(&T.jsgraph, &T.common, T.main_zone()); |
+ T.DeconstructOsr(); |
CheckInputs(loop, T.start, loop); |
CheckInputs(osr_phi, T.osr_values[0], T.jsgraph.ZeroConstant(), loop); |
CheckInputs(ret, osr_phi, T.start, loop); |
// The control before the loop should have been removed. |
- CHECK(d.branch->IsDead()); |
- CHECK(d.if_true->IsDead()); |
- CHECK(d.if_false->IsDead()); |
- CHECK(d.merge->IsDead()); |
+ AllNodes nodes(T.main_zone(), &T.graph); |
+ CHECK(!nodes.IsLive(d.branch)); |
+ CHECK(!nodes.IsLive(d.if_true)); |
+ CHECK(!nodes.IsLive(d.if_false)); |
+ CHECK(!nodes.IsLive(d.merge)); |
} |
@@ -191,8 +201,7 @@ TEST(Deconstruct_osr_with_body1) { |
Node* ret = T.graph.NewNode(T.common.Return(), osr_phi, T.start, if_false); |
T.graph.SetEnd(ret); |
- OsrHelper helper(0, 0); |
- helper.Deconstruct(&T.jsgraph, &T.common, T.main_zone()); |
+ T.DeconstructOsr(); |
CheckInputs(loop, T.start, if_true); |
CheckInputs(branch, T.p0, loop); |
@@ -225,8 +234,7 @@ TEST(Deconstruct_osr_with_body2) { |
Node* ret = T.graph.NewNode(T.common.Return(), osr_phi, T.start, merge); |
T.graph.SetEnd(ret); |
- OsrHelper helper(0, 0); |
- helper.Deconstruct(&T.jsgraph, &T.common, T.main_zone()); |
+ T.DeconstructOsr(); |
CheckInputs(loop, T.start, if_true2); |
CheckInputs(branch1, T.p0, loop); |
@@ -265,8 +273,7 @@ TEST(Deconstruct_osr_with_body3) { |
Node* ret = T.graph.NewNode(T.common.Return(), osr_phi, T.start, if_false2); |
T.graph.SetEnd(ret); |
- OsrHelper helper(0, 0); |
- helper.Deconstruct(&T.jsgraph, &T.common, T.main_zone()); |
+ T.DeconstructOsr(); |
CheckInputs(loop, T.start, if_false1, if_true2); |
CheckInputs(branch1, T.p0, loop); |
@@ -342,8 +349,7 @@ TEST(Deconstruct_osr_nested1) { |
Node* end = T.graph.NewNode(T.common.End(), ret); |
T.graph.SetEnd(end); |
- OsrHelper helper(0, 0); |
- helper.Deconstruct(&T.jsgraph, &T.common, T.main_zone()); |
+ T.DeconstructOsr(); |
// Check structure of deconstructed graph. |
// Check inner OSR loop is directly connected to start. |
@@ -410,8 +416,7 @@ TEST(Deconstruct_osr_nested2) { |
Node* end = T.graph.NewNode(T.common.End(), ret); |
T.graph.SetEnd(end); |
- OsrHelper helper(0, 0); |
- helper.Deconstruct(&T.jsgraph, &T.common, T.main_zone()); |
+ T.DeconstructOsr(); |
// Check structure of deconstructed graph. |
// Check inner OSR loop is directly connected to start. |