diff options
author | Michaël Zasso <targos@protonmail.com> | 2018-09-07 17:07:13 +0200 |
---|---|---|
committer | Michaël Zasso <targos@protonmail.com> | 2018-09-07 20:59:13 +0200 |
commit | 586db2414a338e1bf6eaf6e672a3adc7ce309f6a (patch) | |
tree | 139fa972aef648481ddee22a3a85b99707d28df5 /deps/v8/test/unittests/compiler/arm | |
parent | 12ed7c94e5160aa6d38e3d2cb2a73dae0a6f9342 (diff) | |
download | node-new-586db2414a338e1bf6eaf6e672a3adc7ce309f6a.tar.gz |
deps: update V8 to 6.9.427.22
PR-URL: https://github.com/nodejs/node/pull/21983
Reviewed-By: Refael Ackermann <refack@gmail.com>
Reviewed-By: Gus Caplan <me@gus.host>
Reviewed-By: Ujjwal Sharma <usharma1998@gmail.com>
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Diffstat (limited to 'deps/v8/test/unittests/compiler/arm')
-rw-r--r-- | deps/v8/test/unittests/compiler/arm/instruction-selector-arm-unittest.cc | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/deps/v8/test/unittests/compiler/arm/instruction-selector-arm-unittest.cc b/deps/v8/test/unittests/compiler/arm/instruction-selector-arm-unittest.cc index becc1d8405..70e04043c4 100644 --- a/deps/v8/test/unittests/compiler/arm/instruction-selector-arm-unittest.cc +++ b/deps/v8/test/unittests/compiler/arm/instruction-selector-arm-unittest.cc @@ -3266,6 +3266,54 @@ TEST_F(InstructionSelectorTest, SpeculationFence) { EXPECT_EQ(kArmDsbIsb, s[0]->arch_opcode()); } +TEST_F(InstructionSelectorTest, StackCheck0) { + StreamBuilder m(this, MachineType::Int32(), MachineType::Pointer()); + Node* const sp = m.LoadStackPointer(); + Node* const stack_limit = m.Load(MachineType::Int32(), m.Parameter(0)); + Node* const interrupt = m.UintPtrLessThan(sp, stack_limit); + + RawMachineLabel if_true, if_false; + m.Branch(interrupt, &if_true, &if_false); + + m.Bind(&if_true); + m.Return(m.Int32Constant(1)); + + m.Bind(&if_false); + m.Return(m.Int32Constant(0)); + + Stream s = m.Build(); + + ASSERT_EQ(2U, s.size()); + EXPECT_EQ(kArmLdr, s[0]->arch_opcode()); + EXPECT_EQ(kArmCmp, s[1]->arch_opcode()); + EXPECT_EQ(4U, s[1]->InputCount()); + EXPECT_EQ(0U, s[1]->OutputCount()); +} + +TEST_F(InstructionSelectorTest, StackCheck1) { + StreamBuilder m(this, MachineType::Int32(), MachineType::Pointer()); + Node* const sp = m.LoadStackPointer(); + Node* const stack_limit = m.Load(MachineType::Int32(), m.Parameter(0)); + Node* const sp_within_limit = m.UintPtrLessThan(stack_limit, sp); + + RawMachineLabel if_true, if_false; + m.Branch(sp_within_limit, &if_true, &if_false); + + m.Bind(&if_true); + m.Return(m.Int32Constant(1)); + + m.Bind(&if_false); + m.Return(m.Int32Constant(0)); + + Stream s = m.Build(); + + ASSERT_EQ(2U, s.size()); + EXPECT_EQ(kArmLdr, s[0]->arch_opcode()); + EXPECT_EQ(kArmCmp, s[1]->arch_opcode()); + EXPECT_EQ(4U, s[1]->InputCount()); + EXPECT_EQ(0U, s[1]->OutputCount()); +} + } // namespace compiler } // namespace internal } // namespace v8 |