| OLD | NEW |
| 1 // Copyright 2014 the V8 project authors. All rights reserved. | 1 // Copyright 2014 the V8 project authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include <limits> | 5 #include <limits> |
| 6 | 6 |
| 7 #include "src/compiler/access-builder.h" | 7 #include "src/compiler/access-builder.h" |
| 8 #include "src/compiler/change-lowering.h" | 8 #include "src/compiler/change-lowering.h" |
| 9 #include "src/compiler/control-builders.h" | 9 #include "src/compiler/control-builders.h" |
| 10 #include "src/compiler/graph-reducer.h" | 10 #include "src/compiler/graph-reducer.h" |
| (...skipping 680 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 691 NodeProperties::SetType(p1, p1_type); | 691 NodeProperties::SetType(p1, p1_type); |
| 692 NodeProperties::SetType(p2, p2_type); | 692 NodeProperties::SetType(p2, p2_type); |
| 693 } | 693 } |
| 694 | 694 |
| 695 void CheckLoweringBinop(IrOpcode::Value expected, const Operator* op) { | 695 void CheckLoweringBinop(IrOpcode::Value expected, const Operator* op) { |
| 696 Node* node = Return(graph()->NewNode(op, p0, p1)); | 696 Node* node = Return(graph()->NewNode(op, p0, p1)); |
| 697 Lower(); | 697 Lower(); |
| 698 CHECK_EQ(expected, node->opcode()); | 698 CHECK_EQ(expected, node->opcode()); |
| 699 } | 699 } |
| 700 | 700 |
| 701 void CheckLoweringStringBinop(IrOpcode::Value expected, const Operator* op) { |
| 702 Node* node = Return( |
| 703 graph()->NewNode(op, p0, p1, graph()->start(), graph()->start())); |
| 704 Lower(); |
| 705 CHECK_EQ(expected, node->opcode()); |
| 706 } |
| 707 |
| 701 void CheckLoweringTruncatedBinop(IrOpcode::Value expected, const Operator* op, | 708 void CheckLoweringTruncatedBinop(IrOpcode::Value expected, const Operator* op, |
| 702 const Operator* trunc) { | 709 const Operator* trunc) { |
| 703 Node* node = graph()->NewNode(op, p0, p1); | 710 Node* node = graph()->NewNode(op, p0, p1); |
| 704 Return(graph()->NewNode(trunc, node)); | 711 Return(graph()->NewNode(trunc, node)); |
| 705 Lower(); | 712 Lower(); |
| 706 CHECK_EQ(expected, node->opcode()); | 713 CHECK_EQ(expected, node->opcode()); |
| 707 } | 714 } |
| 708 | 715 |
| 709 void Lower() { | 716 void Lower() { |
| 710 SourcePositionTable table(jsgraph.graph()); | 717 SourcePositionTable table(jsgraph.graph()); |
| (...skipping 455 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1166 | 1173 |
| 1167 TEST(LowerStringOps_to_call_and_compare) { | 1174 TEST(LowerStringOps_to_call_and_compare) { |
| 1168 // These tests need linkage for the calls. | 1175 // These tests need linkage for the calls. |
| 1169 TestingGraph t(Type::String(), Type::String()); | 1176 TestingGraph t(Type::String(), Type::String()); |
| 1170 IrOpcode::Value compare_eq = | 1177 IrOpcode::Value compare_eq = |
| 1171 static_cast<IrOpcode::Value>(t.machine()->WordEqual()->opcode()); | 1178 static_cast<IrOpcode::Value>(t.machine()->WordEqual()->opcode()); |
| 1172 IrOpcode::Value compare_lt = | 1179 IrOpcode::Value compare_lt = |
| 1173 static_cast<IrOpcode::Value>(t.machine()->IntLessThan()->opcode()); | 1180 static_cast<IrOpcode::Value>(t.machine()->IntLessThan()->opcode()); |
| 1174 IrOpcode::Value compare_le = static_cast<IrOpcode::Value>( | 1181 IrOpcode::Value compare_le = static_cast<IrOpcode::Value>( |
| 1175 t.machine()->IntLessThanOrEqual()->opcode()); | 1182 t.machine()->IntLessThanOrEqual()->opcode()); |
| 1176 t.CheckLoweringBinop(compare_eq, t.simplified()->StringEqual()); | 1183 t.CheckLoweringStringBinop(compare_eq, t.simplified()->StringEqual()); |
| 1177 t.CheckLoweringBinop(compare_lt, t.simplified()->StringLessThan()); | 1184 t.CheckLoweringStringBinop(compare_lt, t.simplified()->StringLessThan()); |
| 1178 t.CheckLoweringBinop(compare_le, t.simplified()->StringLessThanOrEqual()); | 1185 t.CheckLoweringStringBinop(compare_le, |
| 1186 t.simplified()->StringLessThanOrEqual()); |
| 1179 } | 1187 } |
| 1180 | 1188 |
| 1181 | 1189 |
| 1182 void CheckChangeInsertion(IrOpcode::Value expected, MachineType from, | 1190 void CheckChangeInsertion(IrOpcode::Value expected, MachineType from, |
| 1183 MachineType to) { | 1191 MachineType to) { |
| 1184 TestingGraph t(Type::Any()); | 1192 TestingGraph t(Type::Any()); |
| 1185 Node* in = t.ExampleWithOutput(from); | 1193 Node* in = t.ExampleWithOutput(from); |
| 1186 Node* use = t.Use(in, to); | 1194 Node* use = t.Use(in, to); |
| 1187 t.Return(use); | 1195 t.Return(use); |
| 1188 t.Lower(); | 1196 t.Lower(); |
| (...skipping 798 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1987 Type* phi_type = Type::Union(d.arg1, d.arg2, z); | 1995 Type* phi_type = Type::Union(d.arg1, d.arg2, z); |
| 1988 NodeProperties::SetType(phi, phi_type); | 1996 NodeProperties::SetType(phi, phi_type); |
| 1989 | 1997 |
| 1990 Node* use = t.Use(phi, d.use); | 1998 Node* use = t.Use(phi, d.use); |
| 1991 t.Return(use); | 1999 t.Return(use); |
| 1992 t.Lower(); | 2000 t.Lower(); |
| 1993 | 2001 |
| 1994 CHECK_EQ(d.expected, OpParameter<MachineType>(phi)); | 2002 CHECK_EQ(d.expected, OpParameter<MachineType>(phi)); |
| 1995 } | 2003 } |
| 1996 } | 2004 } |
| OLD | NEW |