Commit Graph

4 Commits

Author SHA1 Message Date
Martin Kustermann 6d0b689c76 [gardening] Add some nops into test function.
Right now the vm/cc/CodeRelocator_* tests are written in a strange way
to work around the conservative assumptions the relocator makes.

A future CL will make the relocator insert tramppolines precisely when
they are needed (not conservatively), which will allow writing precise
tests.

TEST=Fixes ARM64 vm/cc/CodeRelocator_* tests

Change-Id: I68f9bcce29f42a2264608f867f177e8f557804fb
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/196666
Reviewed-by: Martin Kustermann <kustermann@google.com>
Commit-Queue: Martin Kustermann <kustermann@google.com>
2021-04-23 15:00:31 +00:00
Martin Kustermann d17a02626c [gardening] Add missing parenthesis to CL which fixed vm/cc/CodeRelocator_* tests
TEST=Fixes arm build.

Change-Id: I4f90ab1994d13484c8b30ce8d8386f8acec59b8e
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/196663
Reviewed-by: Martin Kustermann <kustermann@google.com>
Commit-Queue: Martin Kustermann <kustermann@google.com>
2021-04-23 14:15:09 +00:00
Martin Kustermann 2b50aff493 [gardening] Fix missing RestoreCSP() from vm/cc/RelocationTest_* tests
The tests generate & run relocated instructions. On ARM64 our macro
assembler uses X15 as stack pointer instead of the normal sp.
-> There was a missing RestoreCSP() in the generation of the call
   instructions.
-> It's not an issue for running the test in simulator if CSP is wrong
   when returning, though it is for HW.

Adding RestoreCSP() would require the code to be larger, so instead we
use lower level assembly instructions that operate on the normal ARM64
stack.

Closes https://github.com/dart-lang/sdk/issues/45807

TEST=Fixes vm/cc/RelocatinoTest_* on arm64 hw

Change-Id: I0c65e3d22897f536e39f0cf7e9af2be871051b0d
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/196498
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
Commit-Queue: Martin Kustermann <kustermann@google.com>
2021-04-23 14:05:21 +00:00
Martin Kustermann d41f9a738e [vm/compiler] Fix relocator to take out-of-range backwards calls into acount
There was a missing check for whether a backwards call is out-of-range.

The CL also removes leftover code related to [max_offset_into_target_] -
which wasn't used. The intended use is already over approximated via
[max_instructions_size_].

The CL makes the pc-relative call/tail-call distances pluggable so a
newly added test can modify them for testing in-range/out-of-range
forward/backwards calls.

TEST=vm/cc/CodeRelocator_*

Fixes https://github.com/flutter/flutter/issues/80043

Change-Id: Id4bdb7176108b61235dafb7ffc125da4a2bf07fa
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/195682
Commit-Queue: Martin Kustermann <kustermann@google.com>
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
2021-04-19 09:42:00 +00:00