From b544a1017753bfef7b91a2ea3024ffbde6cd5bb9 Mon Sep 17 00:00:00 2001 From: Artem Serov Date: Mon, 7 Oct 2024 13:48:54 +0100 Subject: Arm64: Fix PackedSwitch codegen for large methods. This patch fixes a bug in arm64 PackedSwitch code generation for very large methods where we exceeded the range of Adr instruction - jump tables were emited in the very end of the method. Instead we now emit the jump table in-place as part of the PackedSwitch visitor - in the same way how it is done in arm32 backend. This patch also removes an incorrect assumption that the size of a method has a linear dependency on the number of its HIR instructions. This was used to choose whether to emit a jump table for a PackedSwitch. Test: art/test.py --target --host --optimizing Test: art/test.py --gtest art_compiler_tests Change-Id: I0795811a6408a25021879ab6be9e23ef5f1f50e4 --- compiler/optimizing/optimizing_unit_test.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'compiler/optimizing/optimizing_unit_test.h') diff --git a/compiler/optimizing/optimizing_unit_test.h b/compiler/optimizing/optimizing_unit_test.h index abd1ffe03e..a7c3558c5f 100644 --- a/compiler/optimizing/optimizing_unit_test.h +++ b/compiler/optimizing/optimizing_unit_test.h @@ -382,7 +382,7 @@ class OptimizingUnitTestHelper { pre_header->AddSuccessor(loop); loop->AddSuccessor(loop_exit); // true successor - loop->AddSuccessor(loop); // fakse successor + loop->AddSuccessor(loop); // false successor MakeGoto(pre_header); -- cgit v1.2.3-59-g8ed1b