Files
sdk/runtime/vm
Vyacheslav Egorov 4b5c267dbd [vm/compiler] Support frameless functions
This CL allows register allocator to mark functions as frameless
in AOT bare instructions mode if they don't contain calls (with an
exception for write barrier related calls), don't require
spills and don't use optional or named parameters.

Calls to Write Barrier helper stubs introduce some complexity
on ARM/ARM64, where we need to take into account that return
address needs to be explicitly spilled from LR register. To keep
the code size balance (frame setup vs manual LR spilling on WB
slow path) we allow one instruction with a write barrier
per frameless function.

Flutter Gallery snapshot becomes 800KB smaller (3% reduction), but
APK size for some reason increases by .1%. On a large internal
application effect is much smaller (60K - 0.16% reduction).

Flutter Gallery is disproportionally affected by the change due to
abnormal amount of small getters originating from localizations:
each localized phrase becomes a getter returning a constant on a
localization specific class.

TEST=tested through normal test suite

Cq-Include-Trybots: luci.dart.try:vm-kernel-linux-release-simarm-try,vm-kernel-linux-release-simarm64-try,vm-kernel-precomp-linux-release-simarm-try,vm-kernel-precomp-linux-release-simarm64-try,vm-ffi-android-release-arm64-try,vm-ffi-android-release-arm-try,vm-kernel-precomp-android-release-arm_x64-try,vm-kernel-precomp-android-release-arm64-try
Change-Id: I86cb45a57567ee654ead388957ac4e561634ef9c
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/175304
Commit-Queue: Vyacheslav Egorov <vegorov@google.com>
Reviewed-by: Alexander Markov <alexmarkov@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
2020-12-10 15:51:27 +00:00
..
2020-12-04 22:46:12 +00:00
2020-12-10 12:15:17 +00:00
2020-06-26 09:39:15 +00:00
2020-12-10 12:15:17 +00:00
2020-09-17 06:07:50 +00:00
2020-11-16 23:52:40 +00:00
2020-10-28 17:42:35 +00:00
2020-10-28 17:42:35 +00:00
2020-06-17 14:01:54 +00:00
2020-10-28 17:42:35 +00:00
2020-10-28 17:42:35 +00:00
2020-10-28 17:42:35 +00:00
2020-08-06 19:55:12 +00:00
2020-08-06 19:55:12 +00:00