diff options
Diffstat (limited to 'deps/v8/test/cctest/test-macro-assembler-arm64.cc')
-rw-r--r-- | deps/v8/test/cctest/test-macro-assembler-arm64.cc | 37 |
1 files changed, 33 insertions, 4 deletions
diff --git a/deps/v8/test/cctest/test-macro-assembler-arm64.cc b/deps/v8/test/cctest/test-macro-assembler-arm64.cc index f693230b9b..0c231ae0a0 100644 --- a/deps/v8/test/cctest/test-macro-assembler-arm64.cc +++ b/deps/v8/test/cctest/test-macro-assembler-arm64.cc @@ -27,13 +27,13 @@ #include <stdlib.h> -#include "src/init/v8.h" - #include "src/base/platform/platform.h" #include "src/codegen/arm64/assembler-arm64-inl.h" -#include "src/codegen/macro-assembler.h" +#include "src/codegen/macro-assembler-inl.h" +#include "src/deoptimizer/deoptimizer.h" #include "src/execution/simulator.h" #include "src/heap/factory.h" +#include "src/init/v8.h" #include "src/objects/objects-inl.h" #include "src/objects/smi.h" #include "src/utils/ostreams.h" @@ -66,7 +66,7 @@ TEST(EmbeddedObj) { CodeDesc desc; masm.GetCode(isolate, &desc); Handle<Code> code = - Factory::CodeBuilder(isolate, desc, CodeKind::STUB).Build(); + Factory::CodeBuilder(isolate, desc, CodeKind::FOR_TESTING).Build(); #ifdef DEBUG StdoutStream os; code->Print(os); @@ -91,6 +91,35 @@ TEST(EmbeddedObj) { #endif // V8_COMPRESS_POINTERS } +TEST(DeoptExitSizeIsFixed) { + CHECK(Deoptimizer::kSupportsFixedDeoptExitSizes); + + Isolate* isolate = CcTest::i_isolate(); + HandleScope handles(isolate); + auto buffer = AllocateAssemblerBuffer(); + MacroAssembler masm(isolate, v8::internal::CodeObjectRequired::kYes, + buffer->CreateView()); + + STATIC_ASSERT(static_cast<int>(kFirstDeoptimizeKind) == 0); + for (int i = 0; i < kDeoptimizeKindCount; i++) { + DeoptimizeKind kind = static_cast<DeoptimizeKind>(i); + Builtins::Name target = Deoptimizer::GetDeoptimizationEntry(isolate, kind); + Label before_exit; + // Mirroring logic in code-generator.cc. + if (kind == DeoptimizeKind::kLazy) { + // CFI emits an extra instruction here. + masm.BindExceptionHandler(&before_exit); + } else { + masm.bind(&before_exit); + } + masm.CallForDeoptimization(target, 42, &before_exit, kind, &before_exit); + CHECK_EQ(masm.SizeOfCodeGeneratedSince(&before_exit), + kind == DeoptimizeKind::kLazy + ? Deoptimizer::kLazyDeoptExitSize + : Deoptimizer::kNonLazyDeoptExitSize); + } +} + #undef __ } // namespace test_macro_assembler_arm64 |