diff options
Diffstat (limited to 'deps/v8/test/cctest/test-code-stub-assembler.cc')
-rw-r--r-- | deps/v8/test/cctest/test-code-stub-assembler.cc | 40 |
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 |