| Index: test/cctest/compiler/test-js-context-specialization.cc
|
| diff --git a/test/cctest/compiler/test-js-context-specialization.cc b/test/cctest/compiler/test-js-context-specialization.cc
|
| index 7eb50085b6fde35515ce22298d109689074e37f4..6148a12a40f558ec00645a6996adfce886ad625c 100644
|
| --- a/test/cctest/compiler/test-js-context-specialization.cc
|
| +++ b/test/cctest/compiler/test-js-context-specialization.cc
|
| @@ -22,8 +22,11 @@ class ContextSpecializationTester : public HandleAndZoneScope {
|
| javascript_(main_zone()),
|
| machine_(main_zone()),
|
| simplified_(main_zone()),
|
| - jsgraph_(main_isolate(), graph(), common(), &javascript_, &machine_) {}
|
| + jsgraph_(main_isolate(), graph(), common(), &javascript_, &machine_),
|
| + reducer_(main_zone(), graph()),
|
| + spec_(&reducer_, jsgraph()) {}
|
|
|
| + JSContextSpecializer* spec() { return &spec_; }
|
| Factory* factory() { return main_isolate()->factory(); }
|
| CommonOperatorBuilder* common() { return &common_; }
|
| JSOperatorBuilder* javascript() { return &javascript_; }
|
| @@ -38,6 +41,8 @@ class ContextSpecializationTester : public HandleAndZoneScope {
|
| MachineOperatorBuilder machine_;
|
| SimplifiedOperatorBuilder simplified_;
|
| JSGraph jsgraph_;
|
| + GraphReducer reducer_;
|
| + JSContextSpecializer spec_;
|
| };
|
|
|
|
|
| @@ -60,13 +65,12 @@ TEST(ReduceJSLoadContext) {
|
| Node* const_context = t.jsgraph()->Constant(native);
|
| Node* deep_const_context = t.jsgraph()->Constant(subcontext2);
|
| Node* param_context = t.graph()->NewNode(t.common()->Parameter(0), start);
|
| - JSContextSpecializer spec(t.jsgraph());
|
|
|
| {
|
| // Mutable slot, constant context, depth = 0 => do nothing.
|
| Node* load = t.graph()->NewNode(t.javascript()->LoadContext(0, 0, false),
|
| const_context, const_context, start);
|
| - Reduction r = spec.ReduceJSLoadContext(load);
|
| + Reduction r = t.spec()->ReduceJSLoadContext(load);
|
| CHECK(!r.Changed());
|
| }
|
|
|
| @@ -74,7 +78,7 @@ TEST(ReduceJSLoadContext) {
|
| // Mutable slot, non-constant context, depth = 0 => do nothing.
|
| Node* load = t.graph()->NewNode(t.javascript()->LoadContext(0, 0, false),
|
| param_context, param_context, start);
|
| - Reduction r = spec.ReduceJSLoadContext(load);
|
| + Reduction r = t.spec()->ReduceJSLoadContext(load);
|
| CHECK(!r.Changed());
|
| }
|
|
|
| @@ -83,7 +87,7 @@ TEST(ReduceJSLoadContext) {
|
| Node* load = t.graph()->NewNode(
|
| t.javascript()->LoadContext(2, Context::GLOBAL_EVAL_FUN_INDEX, false),
|
| deep_const_context, deep_const_context, start);
|
| - Reduction r = spec.ReduceJSLoadContext(load);
|
| + Reduction r = t.spec()->ReduceJSLoadContext(load);
|
| CHECK(r.Changed());
|
| Node* new_context_input = NodeProperties::GetValueInput(r.replacement(), 0);
|
| CHECK_EQ(IrOpcode::kHeapConstant, new_context_input->opcode());
|
| @@ -99,7 +103,7 @@ TEST(ReduceJSLoadContext) {
|
| // Immutable slot, constant context, depth = 0 => specialize.
|
| Node* load = t.graph()->NewNode(t.javascript()->LoadContext(0, slot, true),
|
| const_context, const_context, start);
|
| - Reduction r = spec.ReduceJSLoadContext(load);
|
| + Reduction r = t.spec()->ReduceJSLoadContext(load);
|
| CHECK(r.Changed());
|
| CHECK(r.replacement() != load);
|
|
|
| @@ -132,13 +136,12 @@ TEST(ReduceJSStoreContext) {
|
| Node* const_context = t.jsgraph()->Constant(native);
|
| Node* deep_const_context = t.jsgraph()->Constant(subcontext2);
|
| Node* param_context = t.graph()->NewNode(t.common()->Parameter(0), start);
|
| - JSContextSpecializer spec(t.jsgraph());
|
|
|
| {
|
| // Mutable slot, constant context, depth = 0 => do nothing.
|
| Node* load = t.graph()->NewNode(t.javascript()->StoreContext(0, 0),
|
| const_context, const_context, start);
|
| - Reduction r = spec.ReduceJSStoreContext(load);
|
| + Reduction r = t.spec()->ReduceJSStoreContext(load);
|
| CHECK(!r.Changed());
|
| }
|
|
|
| @@ -146,7 +149,7 @@ TEST(ReduceJSStoreContext) {
|
| // Mutable slot, non-constant context, depth = 0 => do nothing.
|
| Node* load = t.graph()->NewNode(t.javascript()->StoreContext(0, 0),
|
| param_context, param_context, start);
|
| - Reduction r = spec.ReduceJSStoreContext(load);
|
| + Reduction r = t.spec()->ReduceJSStoreContext(load);
|
| CHECK(!r.Changed());
|
| }
|
|
|
| @@ -154,7 +157,7 @@ TEST(ReduceJSStoreContext) {
|
| // Immutable slot, constant context, depth = 0 => do nothing.
|
| Node* load = t.graph()->NewNode(t.javascript()->StoreContext(0, slot),
|
| const_context, const_context, start);
|
| - Reduction r = spec.ReduceJSStoreContext(load);
|
| + Reduction r = t.spec()->ReduceJSStoreContext(load);
|
| CHECK(!r.Changed());
|
| }
|
|
|
| @@ -163,7 +166,7 @@ TEST(ReduceJSStoreContext) {
|
| Node* load = t.graph()->NewNode(
|
| t.javascript()->StoreContext(2, Context::GLOBAL_EVAL_FUN_INDEX),
|
| deep_const_context, deep_const_context, start);
|
| - Reduction r = spec.ReduceJSStoreContext(load);
|
| + Reduction r = t.spec()->ReduceJSStoreContext(load);
|
| CHECK(r.Changed());
|
| Node* new_context_input = NodeProperties::GetValueInput(r.replacement(), 0);
|
| CHECK_EQ(IrOpcode::kHeapConstant, new_context_input->opcode());
|
| @@ -197,7 +200,6 @@ TEST(SpecializeToContext) {
|
|
|
| Node* const_context = t.jsgraph()->Constant(native);
|
| Node* param_context = t.graph()->NewNode(t.common()->Parameter(0), start);
|
| - JSContextSpecializer spec(t.jsgraph());
|
|
|
| {
|
| // Check that specialization replaces values and forwards effects
|
| @@ -232,6 +234,7 @@ TEST(SpecializeToContext) {
|
|
|
| // Perform the reduction on the entire graph.
|
| GraphReducer graph_reducer(t.main_zone(), t.graph());
|
| + JSContextSpecializer spec(&graph_reducer, t.jsgraph());
|
| graph_reducer.AddReducer(&spec);
|
| graph_reducer.ReduceGraph();
|
|
|
|
|