summaryrefslogtreecommitdiff
path: root/deps/v8/test/cctest/test-macro-assembler-arm64.cc
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/test/cctest/test-macro-assembler-arm64.cc')
-rw-r--r--deps/v8/test/cctest/test-macro-assembler-arm64.cc37
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