summaryrefslogtreecommitdiff
path: root/deps/v8/test/cctest/test-code-stub-assembler.cc
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/test/cctest/test-code-stub-assembler.cc')
-rw-r--r--deps/v8/test/cctest/test-code-stub-assembler.cc40
1 files changed, 37 insertions, 3 deletions
diff --git a/deps/v8/test/cctest/test-code-stub-assembler.cc b/deps/v8/test/cctest/test-code-stub-assembler.cc
index 2036e13450..ffe9200eee 100644
--- a/deps/v8/test/cctest/test-code-stub-assembler.cc
+++ b/deps/v8/test/cctest/test-code-stub-assembler.cc
@@ -907,9 +907,12 @@ TEST(TransitionLookup) {
}
}
- CHECK(root_map->raw_transitions()->ToStrongHeapObject()->IsTransitionArray());
+ CHECK(root_map->raw_transitions()
+ ->GetHeapObjectAssumeStrong()
+ ->IsTransitionArray());
Handle<TransitionArray> transitions(
- TransitionArray::cast(root_map->raw_transitions()->ToStrongHeapObject()),
+ TransitionArray::cast(
+ root_map->raw_transitions()->GetHeapObjectAssumeStrong()),
isolate);
DCHECK(transitions->IsSortedNoDuplicates());
@@ -2495,7 +2498,7 @@ TEST(CreatePromiseGetCapabilitiesExecutorContext) {
Node* const context = m.Parameter(kNumParams + 2);
Node* const native_context = m.LoadNativeContext(context);
- Node* const map = m.LoadRoot(Heap::kPromiseCapabilityMapRootIndex);
+ Node* const map = m.LoadRoot(RootIndex::kPromiseCapabilityMap);
Node* const capability = m.AllocateStruct(map);
m.StoreObjectFieldNoWriteBarrier(
capability, PromiseCapability::kPromiseOffset, m.UndefinedConstant());
@@ -3495,6 +3498,37 @@ TEST(TestCallBuiltinIndirectLoad) {
Handle<String>::cast(result.ToHandleChecked())));
}
+TEST(TestGotoIfDebugExecutionModeChecksSideEffects) {
+ Isolate* isolate(CcTest::InitIsolateOnce());
+ CodeAssemblerTester asm_tester(isolate, 0);
+ {
+ CodeStubAssembler m(asm_tester.state());
+ Label is_true(&m), is_false(&m);
+ m.GotoIfDebugExecutionModeChecksSideEffects(&is_true);
+ m.Goto(&is_false);
+ m.BIND(&is_false);
+ m.Return(m.BooleanConstant(false));
+
+ m.BIND(&is_true);
+ m.Return(m.BooleanConstant(true));
+ }
+
+ FunctionTester ft(asm_tester.GenerateCode(), 0);
+
+ CHECK(isolate->debug_execution_mode() != DebugInfo::kSideEffects);
+
+ Handle<Object> result = ft.Call().ToHandleChecked();
+ CHECK(result->IsBoolean());
+ CHECK_EQ(false, result->BooleanValue(isolate));
+
+ isolate->debug()->StartSideEffectCheckMode();
+ CHECK(isolate->debug_execution_mode() == DebugInfo::kSideEffects);
+
+ result = ft.Call().ToHandleChecked();
+ CHECK(result->IsBoolean());
+ CHECK_EQ(true, result->BooleanValue(isolate));
+}
+
} // namespace compiler
} // namespace internal
} // namespace v8