summaryrefslogtreecommitdiff
path: root/deps/v8/test/unittests/compiler/arm
diff options
context:
space:
mode:
authorMichaël Zasso <targos@protonmail.com>2018-09-07 17:07:13 +0200
committerMichaël Zasso <targos@protonmail.com>2018-09-07 20:59:13 +0200
commit586db2414a338e1bf6eaf6e672a3adc7ce309f6a (patch)
tree139fa972aef648481ddee22a3a85b99707d28df5 /deps/v8/test/unittests/compiler/arm
parent12ed7c94e5160aa6d38e3d2cb2a73dae0a6f9342 (diff)
downloadnode-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.cc48
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