OSDN Git Service

Avoid scratch register exhaustion during ARM64 stack slot moves.
authorRoland Levillain <rpl@google.com>
Mon, 7 Nov 2016 18:50:32 +0000 (18:50 +0000)
committerRoland Levillain <rpl@google.com>
Tue, 3 Jan 2017 14:07:44 +0000 (14:07 +0000)
commit4ec76d28f0f808117272134347abf828eea80b91
treebe3b7c5125549dd772a622603e69353466f2f356
parent66e3919bc42ddca40302ce5ee32e3ade248dd2b6
Avoid scratch register exhaustion during ARM64 stack slot moves.

On ARM64, do not limit the selection of a scratch register
used in a move between two stack slots (or between two
double stack slots) to VIXL's floating-point register pool,
as it contains only one register (D31) and can be exhausted
in some rare cases. Instead, query both the core and the FP
register pools.

Add a regression run-test (626-checker-arm64-scratch-register).

Test: m test-art-target (on ARM64)
Bug: 32545705
Change-Id: I6203a4340e3c8b4f4879c07ed1be4c433c311c0f
compiler/optimizing/code_generator_arm64.cc
test/626-checker-arm64-scratch-register/expected.txt [new file with mode: 0644]
test/626-checker-arm64-scratch-register/info.txt [new file with mode: 0644]
test/626-checker-arm64-scratch-register/src/Main.java [new file with mode: 0644]