| 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 "src/v8.h" | 5 #include "src/v8.h" |
| 6 #include "test/cctest/cctest.h" | 6 #include "test/cctest/cctest.h" |
| 7 | 7 |
| 8 #include "src/compiler/graph-inl.h" | 8 #include "src/compiler/graph-inl.h" |
| 9 #include "src/compiler/js-typed-lowering.h" | 9 #include "src/compiler/js-typed-lowering.h" |
| 10 #include "src/compiler/node-properties-inl.h" | 10 #include "src/compiler/node-properties-inl.h" |
| (...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 101 return graph.NewNode(javascript.ToNumber(), node, context(), node, | 101 return graph.NewNode(javascript.ToNumber(), node, context(), node, |
| 102 control()); | 102 control()); |
| 103 } | 103 } |
| 104 | 104 |
| 105 void CheckEffectInput(Node* effect, Node* use) { | 105 void CheckEffectInput(Node* effect, Node* use) { |
| 106 CHECK_EQ(effect, NodeProperties::GetEffectInput(use)); | 106 CHECK_EQ(effect, NodeProperties::GetEffectInput(use)); |
| 107 } | 107 } |
| 108 | 108 |
| 109 void CheckInt32Constant(int32_t expected, Node* result) { | 109 void CheckInt32Constant(int32_t expected, Node* result) { |
| 110 CHECK_EQ(IrOpcode::kInt32Constant, result->opcode()); | 110 CHECK_EQ(IrOpcode::kInt32Constant, result->opcode()); |
| 111 CHECK_EQ(expected, ValueOf<int32_t>(result->op())); | 111 CHECK_EQ(expected, OpParameter<int32_t>(result)); |
| 112 } | 112 } |
| 113 | 113 |
| 114 void CheckNumberConstant(double expected, Node* result) { | 114 void CheckNumberConstant(double expected, Node* result) { |
| 115 CHECK_EQ(IrOpcode::kNumberConstant, result->opcode()); | 115 CHECK_EQ(IrOpcode::kNumberConstant, result->opcode()); |
| 116 CHECK_EQ(expected, ValueOf<double>(result->op())); | 116 CHECK_EQ(expected, OpParameter<double>(result)); |
| 117 } | 117 } |
| 118 | 118 |
| 119 void CheckNaN(Node* result) { | 119 void CheckNaN(Node* result) { |
| 120 CHECK_EQ(IrOpcode::kNumberConstant, result->opcode()); | 120 CHECK_EQ(IrOpcode::kNumberConstant, result->opcode()); |
| 121 double value = ValueOf<double>(result->op()); | 121 double value = OpParameter<double>(result); |
| 122 CHECK(std::isnan(value)); | 122 CHECK(std::isnan(value)); |
| 123 } | 123 } |
| 124 | 124 |
| 125 void CheckTrue(Node* result) { | 125 void CheckTrue(Node* result) { |
| 126 CheckHandle(isolate->factory()->true_value(), result); | 126 CheckHandle(isolate->factory()->true_value(), result); |
| 127 } | 127 } |
| 128 | 128 |
| 129 void CheckFalse(Node* result) { | 129 void CheckFalse(Node* result) { |
| 130 CheckHandle(isolate->factory()->false_value(), result); | 130 CheckHandle(isolate->factory()->false_value(), result); |
| 131 } | 131 } |
| 132 | 132 |
| 133 void CheckHandle(Handle<Object> expected, Node* result) { | 133 void CheckHandle(Handle<Object> expected, Node* result) { |
| 134 CHECK_EQ(IrOpcode::kHeapConstant, result->opcode()); | 134 CHECK_EQ(IrOpcode::kHeapConstant, result->opcode()); |
| 135 Handle<Object> value = ValueOf<Handle<Object> >(result->op()); | 135 Handle<Object> value = OpParameter<Unique<Object> >(result).handle(); |
| 136 CHECK_EQ(*expected, *value); | 136 CHECK_EQ(*expected, *value); |
| 137 } | 137 } |
| 138 }; | 138 }; |
| 139 | 139 |
| 140 static Type* kStringTypes[] = {Type::InternalizedString(), Type::OtherString(), | 140 static Type* kStringTypes[] = {Type::InternalizedString(), Type::OtherString(), |
| 141 Type::String()}; | 141 Type::String()}; |
| 142 | 142 |
| 143 | 143 |
| 144 static Type* kInt32Types[] = { | 144 static Type* kInt32Types[] = { |
| 145 Type::UnsignedSmall(), Type::OtherSignedSmall(), Type::OtherUnsigned31(), | 145 Type::UnsignedSmall(), Type::OtherSignedSmall(), Type::OtherUnsigned31(), |
| (...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 233 } | 233 } |
| 234 | 234 |
| 235 | 235 |
| 236 static void CheckToI32(Node* old_input, Node* new_input, bool is_signed) { | 236 static void CheckToI32(Node* old_input, Node* new_input, bool is_signed) { |
| 237 Type* old_type = NodeProperties::GetBounds(old_input).upper; | 237 Type* old_type = NodeProperties::GetBounds(old_input).upper; |
| 238 Type* expected_type = I32Type(is_signed); | 238 Type* expected_type = I32Type(is_signed); |
| 239 if (old_type->Is(expected_type)) { | 239 if (old_type->Is(expected_type)) { |
| 240 CHECK_EQ(old_input, new_input); | 240 CHECK_EQ(old_input, new_input); |
| 241 } else if (new_input->opcode() == IrOpcode::kNumberConstant) { | 241 } else if (new_input->opcode() == IrOpcode::kNumberConstant) { |
| 242 CHECK(NodeProperties::GetBounds(new_input).upper->Is(expected_type)); | 242 CHECK(NodeProperties::GetBounds(new_input).upper->Is(expected_type)); |
| 243 double v = ValueOf<double>(new_input->op()); | 243 double v = OpParameter<double>(new_input); |
| 244 double e = static_cast<double>(is_signed ? FastD2I(v) : FastD2UI(v)); | 244 double e = static_cast<double>(is_signed ? FastD2I(v) : FastD2UI(v)); |
| 245 CHECK_EQ(e, v); | 245 CHECK_EQ(e, v); |
| 246 } else { | 246 } else { |
| 247 CHECK_EQ(NumberToI32(is_signed), new_input->opcode()); | 247 CHECK_EQ(NumberToI32(is_signed), new_input->opcode()); |
| 248 } | 248 } |
| 249 } | 249 } |
| 250 | 250 |
| 251 | 251 |
| 252 // A helper class for testing lowering of bitwise shift operators. | 252 // A helper class for testing lowering of bitwise shift operators. |
| 253 class JSBitwiseShiftTypedLoweringTester : public JSTypedLoweringTester { | 253 class JSBitwiseShiftTypedLoweringTester : public JSTypedLoweringTester { |
| (...skipping 1089 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1343 CHECK_EQ(p1, r->InputAt(0)); | 1343 CHECK_EQ(p1, r->InputAt(0)); |
| 1344 CHECK_EQ(p0, r->InputAt(1)); | 1344 CHECK_EQ(p0, r->InputAt(1)); |
| 1345 } else { | 1345 } else { |
| 1346 CHECK_EQ(p0, r->InputAt(0)); | 1346 CHECK_EQ(p0, r->InputAt(0)); |
| 1347 CHECK_EQ(p1, r->InputAt(1)); | 1347 CHECK_EQ(p1, r->InputAt(1)); |
| 1348 } | 1348 } |
| 1349 } | 1349 } |
| 1350 } | 1350 } |
| 1351 } | 1351 } |
| 1352 } | 1352 } |
| OLD | NEW |