| 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/code-stubs.h" | 5 #include "src/code-stubs.h" |
| 6 #include "src/compiler/change-lowering.h" | 6 #include "src/compiler/change-lowering.h" |
| 7 #include "src/compiler/js-graph.h" | 7 #include "src/compiler/js-graph.h" |
| 8 #include "src/compiler/linkage.h" | 8 #include "src/compiler/linkage.h" |
| 9 #include "src/compiler/node-properties.h" | 9 #include "src/compiler/node-properties.h" |
| 10 #include "src/compiler/simplified-operator.h" | 10 #include "src/compiler/simplified-operator.h" |
| (...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 175 Node* value = Parameter(Type::TaggedPointer()); | 175 Node* value = Parameter(Type::TaggedPointer()); |
| 176 Reduction r = | 176 Reduction r = |
| 177 Reduce(graph()->NewNode(simplified()->ChangeTaggedToUint32(), value)); | 177 Reduce(graph()->NewNode(simplified()->ChangeTaggedToUint32(), value)); |
| 178 ASSERT_TRUE(r.Changed()); | 178 ASSERT_TRUE(r.Changed()); |
| 179 EXPECT_THAT(r.replacement(), IsChangeFloat64ToUint32( | 179 EXPECT_THAT(r.replacement(), IsChangeFloat64ToUint32( |
| 180 IsLoadHeapNumber(value, graph()->start()))); | 180 IsLoadHeapNumber(value, graph()->start()))); |
| 181 } | 181 } |
| 182 | 182 |
| 183 | 183 |
| 184 TARGET_TEST_P(ChangeLoweringCommonTest, StoreFieldSmi) { | 184 TARGET_TEST_P(ChangeLoweringCommonTest, StoreFieldSmi) { |
| 185 FieldAccess access = {kTaggedBase, FixedArrayBase::kHeaderSize, | 185 FieldAccess access = {kTaggedBase, FixedArrayBase::kHeaderSize, nullptr, |
| 186 Handle<Name>::null(), Type::Any(), | 186 Type::Any(), MachineType::AnyTagged()}; |
| 187 MachineType::AnyTagged()}; | |
| 188 Node* p0 = Parameter(Type::TaggedPointer()); | 187 Node* p0 = Parameter(Type::TaggedPointer()); |
| 189 Node* p1 = Parameter(Type::TaggedSigned()); | 188 Node* p1 = Parameter(Type::TaggedSigned()); |
| 190 Node* store = graph()->NewNode(simplified()->StoreField(access), p0, p1, | 189 Node* store = graph()->NewNode(simplified()->StoreField(access), p0, p1, |
| 191 graph()->start(), graph()->start()); | 190 graph()->start(), graph()->start()); |
| 192 Reduction r = Reduce(store); | 191 Reduction r = Reduce(store); |
| 193 | 192 |
| 194 ASSERT_TRUE(r.Changed()); | 193 ASSERT_TRUE(r.Changed()); |
| 195 EXPECT_THAT( | 194 EXPECT_THAT( |
| 196 r.replacement(), | 195 r.replacement(), |
| 197 IsStore(StoreRepresentation(MachineType::AnyTagged(), kNoWriteBarrier), | 196 IsStore(StoreRepresentation(MachineType::AnyTagged(), kNoWriteBarrier), |
| 198 p0, IsIntPtrConstant(access.offset - access.tag()), p1, | 197 p0, IsIntPtrConstant(access.offset - access.tag()), p1, |
| 199 graph()->start(), graph()->start())); | 198 graph()->start(), graph()->start())); |
| 200 } | 199 } |
| 201 | 200 |
| 202 | 201 |
| 203 TARGET_TEST_P(ChangeLoweringCommonTest, StoreFieldTagged) { | 202 TARGET_TEST_P(ChangeLoweringCommonTest, StoreFieldTagged) { |
| 204 FieldAccess access = {kTaggedBase, FixedArrayBase::kHeaderSize, | 203 FieldAccess access = {kTaggedBase, FixedArrayBase::kHeaderSize, nullptr, |
| 205 Handle<Name>::null(), Type::Any(), | 204 Type::Any(), MachineType::AnyTagged()}; |
| 206 MachineType::AnyTagged()}; | |
| 207 Node* p0 = Parameter(Type::TaggedPointer()); | 205 Node* p0 = Parameter(Type::TaggedPointer()); |
| 208 Node* p1 = Parameter(Type::Tagged()); | 206 Node* p1 = Parameter(Type::Tagged()); |
| 209 Node* store = graph()->NewNode(simplified()->StoreField(access), p0, p1, | 207 Node* store = graph()->NewNode(simplified()->StoreField(access), p0, p1, |
| 210 graph()->start(), graph()->start()); | 208 graph()->start(), graph()->start()); |
| 211 Reduction r = Reduce(store); | 209 Reduction r = Reduce(store); |
| 212 | 210 |
| 213 ASSERT_TRUE(r.Changed()); | 211 ASSERT_TRUE(r.Changed()); |
| 214 EXPECT_THAT( | 212 EXPECT_THAT( |
| 215 r.replacement(), | 213 r.replacement(), |
| 216 IsStore(StoreRepresentation(MachineType::AnyTagged(), kFullWriteBarrier), | 214 IsStore(StoreRepresentation(MachineType::AnyTagged(), kFullWriteBarrier), |
| 217 p0, IsIntPtrConstant(access.offset - access.tag()), p1, | 215 p0, IsIntPtrConstant(access.offset - access.tag()), p1, |
| 218 graph()->start(), graph()->start())); | 216 graph()->start(), graph()->start())); |
| 219 } | 217 } |
| 220 | 218 |
| 221 | 219 |
| 222 TARGET_TEST_P(ChangeLoweringCommonTest, LoadField) { | 220 TARGET_TEST_P(ChangeLoweringCommonTest, LoadField) { |
| 223 FieldAccess access = {kTaggedBase, FixedArrayBase::kHeaderSize, | 221 FieldAccess access = {kTaggedBase, FixedArrayBase::kHeaderSize, nullptr, |
| 224 Handle<Name>::null(), Type::Any(), | 222 Type::Any(), MachineType::AnyTagged()}; |
| 225 MachineType::AnyTagged()}; | |
| 226 Node* p0 = Parameter(Type::TaggedPointer()); | 223 Node* p0 = Parameter(Type::TaggedPointer()); |
| 227 Node* load = graph()->NewNode(simplified()->LoadField(access), p0, | 224 Node* load = graph()->NewNode(simplified()->LoadField(access), p0, |
| 228 graph()->start(), graph()->start()); | 225 graph()->start(), graph()->start()); |
| 229 Reduction r = Reduce(load); | 226 Reduction r = Reduce(load); |
| 230 | 227 |
| 231 ASSERT_TRUE(r.Changed()); | 228 ASSERT_TRUE(r.Changed()); |
| 232 Matcher<Node*> index_match = IsIntPtrConstant(access.offset - access.tag()); | 229 Matcher<Node*> index_match = IsIntPtrConstant(access.offset - access.tag()); |
| 233 EXPECT_THAT(r.replacement(), | 230 EXPECT_THAT(r.replacement(), |
| 234 IsLoad(MachineType::AnyTagged(), p0, | 231 IsLoad(MachineType::AnyTagged(), p0, |
| 235 IsIntPtrConstant(access.offset - access.tag()), | 232 IsIntPtrConstant(access.offset - access.tag()), |
| (...skipping 381 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 617 CaptureEq(&branch), | 614 CaptureEq(&branch), |
| 618 IsBranch(IsUint32LessThanOrEqual( | 615 IsBranch(IsUint32LessThanOrEqual( |
| 619 value, IsInt32Constant(Smi::kMaxValue)), | 616 value, IsInt32Constant(Smi::kMaxValue)), |
| 620 graph()->start()))), | 617 graph()->start()))), |
| 621 AllOf(CaptureEq(&if_false), IsIfFalse(CaptureEq(&branch)))))); | 618 AllOf(CaptureEq(&if_false), IsIfFalse(CaptureEq(&branch)))))); |
| 622 } | 619 } |
| 623 | 620 |
| 624 } // namespace compiler | 621 } // namespace compiler |
| 625 } // namespace internal | 622 } // namespace internal |
| 626 } // namespace v8 | 623 } // namespace v8 |
| OLD | NEW |