Index: test/cctest/compiler/test-simplified-lowering.cc |
diff --git a/test/cctest/compiler/test-simplified-lowering.cc b/test/cctest/compiler/test-simplified-lowering.cc |
index 2bd3eec46345aac02699d52451fe287d1490e09d..a2412e94d297d25bfb2358e88a9485ebdafb06ba 100644 |
--- a/test/cctest/compiler/test-simplified-lowering.cc |
+++ b/test/cctest/compiler/test-simplified-lowering.cc |
@@ -1441,39 +1441,41 @@ TEST(LowerLoadField_to_load) { |
TEST(LowerStoreField_to_store) { |
- TestingGraph t(Type::Any(), Type::Signed32()); |
+ { |
+ TestingGraph t(Type::Any(), Type::Signed32()); |
- for (size_t i = 0; i < arraysize(kMachineReps); i++) { |
- FieldAccess access = {kTaggedBase, FixedArrayBase::kHeaderSize, |
- Handle<Name>::null(), Type::Any(), kMachineReps[i]}; |
+ for (size_t i = 0; i < arraysize(kMachineReps); i++) { |
+ FieldAccess access = {kTaggedBase, FixedArrayBase::kHeaderSize, |
+ Handle<Name>::null(), Type::Any(), kMachineReps[i]}; |
- Node* val = t.ExampleWithOutput(kMachineReps[i]); |
- Node* store = t.graph()->NewNode(t.simplified()->StoreField(access), t.p0, |
- val, t.start, t.start); |
- t.Effect(store); |
- t.Lower(); |
- CHECK_EQ(IrOpcode::kStore, store->opcode()); |
- CHECK_EQ(val, store->InputAt(2)); |
- CheckFieldAccessArithmetic(access, store); |
+ Node* val = t.ExampleWithOutput(kMachineReps[i]); |
+ Node* store = t.graph()->NewNode(t.simplified()->StoreField(access), t.p0, |
+ val, t.start, t.start); |
+ t.Effect(store); |
+ t.Lower(); |
+ CHECK_EQ(IrOpcode::kStore, store->opcode()); |
+ CHECK_EQ(val, store->InputAt(2)); |
+ CheckFieldAccessArithmetic(access, store); |
- StoreRepresentation rep = OpParameter<StoreRepresentation>(store); |
- if (kMachineReps[i] & kRepTagged) { |
- CHECK_EQ(kFullWriteBarrier, rep.write_barrier_kind()); |
+ StoreRepresentation rep = OpParameter<StoreRepresentation>(store); |
+ if (kMachineReps[i] & kRepTagged) { |
+ CHECK_EQ(kFullWriteBarrier, rep.write_barrier_kind()); |
+ } |
+ CHECK_EQ(kMachineReps[i], rep.machine_type()); |
} |
- CHECK_EQ(kMachineReps[i], rep.machine_type()); |
} |
- |
- if (t.machine()->Is64()) { |
+ { |
+ TestingGraph t(Type::Any(), |
+ Type::Intersect(Type::SignedSmall(), Type::TaggedSigned())); |
FieldAccess access = {kTaggedBase, FixedArrayBase::kHeaderSize, |
Handle<Name>::null(), Type::Any(), kMachAnyTagged}; |
- Node* val = t.graph()->NewNode(t.simplified()->ChangeInt32ToTagged(), t.p0); |
Node* store = t.graph()->NewNode(t.simplified()->StoreField(access), t.p0, |
- val, t.start, t.start); |
+ t.p1, t.start, t.start); |
t.Effect(store); |
t.Lower(); |
CHECK_EQ(IrOpcode::kStore, store->opcode()); |
- CHECK_EQ(val, store->InputAt(2)); |
+ CHECK_EQ(t.p1, store->InputAt(2)); |
StoreRepresentation rep = OpParameter<StoreRepresentation>(store); |
CHECK_EQ(kNoWriteBarrier, rep.write_barrier_kind()); |
} |
@@ -1503,26 +1505,42 @@ TEST(LowerLoadElement_to_load) { |
TEST(LowerStoreElement_to_store) { |
- TestingGraph t(Type::Any(), Type::Signed32()); |
+ { |
+ TestingGraph t(Type::Any(), Type::Signed32()); |
- for (size_t i = 0; i < arraysize(kMachineReps); i++) { |
- ElementAccess access = {kTaggedBase, FixedArrayBase::kHeaderSize, |
- Type::Any(), kMachineReps[i]}; |
+ for (size_t i = 0; i < arraysize(kMachineReps); i++) { |
+ ElementAccess access = {kTaggedBase, FixedArrayBase::kHeaderSize, |
+ Type::Any(), kMachineReps[i]}; |
+ |
+ Node* val = t.ExampleWithOutput(kMachineReps[i]); |
+ Node* store = t.graph()->NewNode(t.simplified()->StoreElement(access), |
+ t.p0, t.p1, val, t.start, t.start); |
+ t.Effect(store); |
+ t.Lower(); |
+ CHECK_EQ(IrOpcode::kStore, store->opcode()); |
+ CHECK_EQ(val, store->InputAt(2)); |
+ CheckElementAccessArithmetic(access, store); |
- Node* val = t.ExampleWithOutput(kMachineReps[i]); |
+ StoreRepresentation rep = OpParameter<StoreRepresentation>(store); |
+ if (kMachineReps[i] & kRepTagged) { |
+ CHECK_EQ(kFullWriteBarrier, rep.write_barrier_kind()); |
+ } |
+ CHECK_EQ(kMachineReps[i], rep.machine_type()); |
+ } |
+ } |
+ { |
+ TestingGraph t(Type::Any(), Type::Signed32(), |
+ Type::Intersect(Type::SignedSmall(), Type::TaggedSigned())); |
+ ElementAccess access = {kTaggedBase, FixedArrayBase::kHeaderSize, |
+ Type::Any(), kMachAnyTagged}; |
Node* store = t.graph()->NewNode(t.simplified()->StoreElement(access), t.p0, |
- t.p1, val, t.start, t.start); |
+ t.p1, t.p2, t.start, t.start); |
t.Effect(store); |
t.Lower(); |
CHECK_EQ(IrOpcode::kStore, store->opcode()); |
- CHECK_EQ(val, store->InputAt(2)); |
- CheckElementAccessArithmetic(access, store); |
- |
+ CHECK_EQ(t.p2, store->InputAt(2)); |
StoreRepresentation rep = OpParameter<StoreRepresentation>(store); |
- if (kMachineReps[i] & kRepTagged) { |
- CHECK_EQ(kFullWriteBarrier, rep.write_barrier_kind()); |
- } |
- CHECK_EQ(kMachineReps[i], rep.machine_type()); |
+ CHECK_EQ(kNoWriteBarrier, rep.write_barrier_kind()); |
} |
} |