Vyacheslav Egorov
65f4a733bb
[vm/compiler] Stop pushing arguments in optimized code.
...
After this change we no longer push outgoing arguments for normal
Dart calls, but instead simply move them into an area reserved for
outgoing arguments at the top of the frame. This allows us to stop
mutating SP and avoid explicit Drop(argc) after each call.
There are still other places in the generated code where we
push something onto the stack either to free a temporary
register or spill a value across a slow-path call.
This is the first step towards switching to native SP on ARM64.
# Code Size Impact
I have tested this on a large internal application and got the
following size delta
## ARM
| | Before | After | Delta | |
|--------|----------|----------|---------|-------|
| ROData | 6366632 | 6463680 | +97048 | +1.5% |
| Code | 22714192 | 22043984 | -670208 | -2.9% |
| Total | 33723701 | 33150477 | -573224 | -1.6% |
## ARM64
| | Before | After | Delta | |
|--------|----------|----------|---------|-------|
| ROData | 7122032 | 7214288 | +92256 | +1.3% |
| Code | 21607196 | 20741788 | -865408 | -4.0% |
| Total | 33375769 | 32602544 | -773225 | -2.3% |
TEST=ci
Cq-Include-Trybots: luci.dart.try:vm-kernel-precomp-nnbd-linux-release-x64-try,vm-kernel-precomp-linux-release-simarm-try,vm-kernel-precomp-linux-debug-x64-try,vm-kernel-precomp-linux-debug-x64c-try,vm-kernel-precomp-linux-product-x64-try,vm-precomp-ffi-qemu-linux-release-riscv64-try,vm-precomp-ffi-qemu-linux-release-arm-try,vm-kernel-precomp-nnbd-linux-release-simarm64-try,vm-kernel-nnbd-linux-release-simarm64-try
Bug: https://github.com/dart-lang/sdk/issues/39083
Change-Id: Icace0c986285b9c16e41786cded44f88277bd25f
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/282029
Reviewed-by: Alexander Markov <alexmarkov@google.com >
Commit-Queue: Slava Egorov <vegorov@google.com >
2023-02-16 19:22:45 +00:00
..
2023-02-16 19:22:45 +00:00
2023-01-18 21:08:38 +00:00
2023-01-30 18:29:59 +00:00
2022-12-29 10:18:02 +00:00
2023-02-01 22:04:29 +00:00
2021-07-29 16:55:55 +00:00
2021-08-10 21:10:01 +00:00
2023-01-23 08:56:14 +00:00
2023-01-26 22:56:48 +00:00
2023-01-18 20:16:11 +00:00
2020-11-13 22:10:54 +00:00
2022-03-03 00:58:49 +00:00
2022-12-06 04:04:23 +00:00
2021-03-19 15:29:57 +00:00
2022-11-17 20:35:47 +00:00
2021-12-16 10:39:49 +00:00
2022-08-22 15:07:47 +00:00
2022-08-22 15:07:47 +00:00
2022-03-26 09:41:21 +00:00
2023-01-19 17:49:08 +00:00
2022-11-15 17:15:58 +00:00
2020-10-06 17:10:05 +00:00
2023-01-18 21:08:38 +00:00
2023-02-06 21:49:07 +00:00
2023-02-06 21:49:07 +00:00
2021-03-02 16:28:12 +00:00
2023-01-19 10:06:29 +00:00
2022-09-12 22:40:57 +00:00
2023-02-09 00:23:22 +00:00
2023-01-16 16:28:43 +00:00
2023-01-16 16:28:43 +00:00
2022-10-14 14:09:44 +00:00
2022-10-14 14:09:44 +00:00
2021-02-02 11:35:00 +00:00
2021-02-02 11:35:00 +00:00
2021-09-08 13:39:34 +00:00
2022-04-29 01:03:50 +00:00
2022-11-11 18:37:44 +00:00
2020-11-13 22:10:54 +00:00
2021-02-02 11:35:00 +00:00
2021-09-10 22:21:36 +00:00
2021-11-24 13:03:52 +00:00
2021-09-10 22:21:36 +00:00
2021-11-24 13:03:52 +00:00
2021-09-10 22:21:36 +00:00
2022-10-27 16:05:39 +00:00
2022-01-20 00:57:57 +00:00
2022-08-25 17:15:33 +00:00
2021-09-10 22:21:36 +00:00
2021-11-24 13:03:52 +00:00
2023-01-20 12:37:49 +00:00
2021-02-04 17:36:47 +00:00
2022-11-17 20:35:47 +00:00
2022-02-22 21:48:14 +00:00
2023-01-20 10:30:41 +00:00
2022-02-22 21:48:14 +00:00
2023-01-20 10:30:41 +00:00
2022-06-08 19:41:52 +00:00
2022-06-08 22:57:03 +00:00
2023-01-20 10:30:41 +00:00
2022-06-23 15:58:15 +00:00
2023-01-24 18:00:25 +00:00
2022-06-08 22:57:03 +00:00
2023-01-20 10:30:41 +00:00
2020-06-11 12:29:19 +00:00
2022-06-08 22:57:03 +00:00
2022-04-07 23:15:48 +00:00
2021-12-16 21:33:49 +00:00
2022-04-13 07:54:02 +00:00
2021-12-16 21:33:49 +00:00
2021-09-27 23:45:45 +00:00
2021-12-16 21:33:49 +00:00
2022-11-21 21:52:03 +00:00
2022-01-20 00:57:57 +00:00
2022-01-20 00:57:57 +00:00
2022-07-29 18:11:01 +00:00
2021-12-16 21:33:49 +00:00
2022-01-20 00:57:57 +00:00
2022-11-14 15:42:52 +00:00
2022-11-14 15:42:52 +00:00
2021-07-02 19:06:45 +00:00
2021-07-02 19:06:45 +00:00
2022-12-15 17:36:39 +00:00
2021-07-02 19:06:45 +00:00
2021-07-02 19:06:45 +00:00
2022-01-20 00:57:57 +00:00
2022-11-01 09:35:02 +00:00
2023-01-25 17:56:39 +00:00
2023-02-02 21:35:47 +00:00
2022-10-25 10:57:07 +00:00
2021-07-29 16:55:55 +00:00
2021-10-14 00:10:12 +00:00
2022-09-06 15:13:16 +00:00
2022-10-28 19:18:51 +00:00
2022-03-25 10:29:30 +00:00
2023-01-26 09:12:41 +00:00
2022-12-15 13:45:10 +00:00
2021-04-26 07:52:47 +00:00
2021-07-08 14:22:54 +00:00
2023-01-20 12:37:49 +00:00
2022-06-10 15:48:54 +00:00
2023-01-19 10:06:29 +00:00
2021-03-19 20:24:48 +00:00
2021-03-19 20:24:48 +00:00
2021-03-19 20:24:48 +00:00
2022-01-20 00:57:57 +00:00
2021-03-19 20:24:48 +00:00
2023-02-15 15:45:48 +00:00
2023-01-18 08:45:31 +00:00
2023-02-13 23:28:30 +00:00
2022-12-20 20:11:48 +00:00
2022-12-20 20:11:48 +00:00
2022-08-03 10:32:46 +00:00
2022-09-12 12:33:57 +00:00
2022-09-12 12:33:57 +00:00
2021-09-01 16:57:59 +00:00
2021-09-01 16:57:59 +00:00
2023-01-18 17:21:13 +00:00
2023-01-19 16:24:29 +00:00
2023-01-24 18:00:25 +00:00
2022-10-06 10:33:09 +00:00
2022-11-01 09:35:02 +00:00
2023-02-10 14:26:19 +00:00
2023-01-24 18:00:25 +00:00
2022-12-06 02:40:36 +00:00
2022-12-06 02:40:36 +00:00
2021-09-08 01:16:57 +00:00
2022-12-29 10:18:02 +00:00
2022-02-17 18:10:31 +00:00
2020-11-03 10:27:44 +00:00
2023-01-30 18:29:59 +00:00
2023-01-27 19:03:18 +00:00
2022-11-03 22:41:53 +00:00
2022-11-03 22:41:53 +00:00
2022-04-27 17:11:35 +00:00
2021-02-16 18:27:39 +00:00
2022-09-27 21:34:05 +00:00
2021-01-15 23:32:02 +00:00
2023-02-06 22:19:55 +00:00
2021-01-15 23:32:02 +00:00
2022-11-23 20:24:29 +00:00
2020-11-03 10:27:44 +00:00
2022-11-23 20:24:29 +00:00
2022-11-23 20:24:29 +00:00
2022-07-06 12:48:16 +00:00
2022-01-21 02:02:00 +00:00
2023-01-18 20:16:11 +00:00
2022-12-01 10:15:58 +00:00
2022-12-29 10:18:02 +00:00
2023-01-20 12:37:49 +00:00
2021-01-15 23:32:02 +00:00
2022-05-11 19:52:45 +00:00
2022-12-29 10:18:02 +00:00
2021-01-15 23:32:02 +00:00
2022-05-11 19:52:45 +00:00
2022-12-29 10:18:02 +00:00
2022-01-20 00:57:57 +00:00
2022-08-25 17:15:33 +00:00
2022-12-29 10:18:02 +00:00
2022-05-11 19:52:45 +00:00
2023-02-03 11:00:18 +00:00
2022-05-11 19:52:45 +00:00
2022-05-11 19:52:45 +00:00
2023-02-13 21:14:38 +00:00
2023-02-13 21:14:38 +00:00
2023-01-19 16:24:29 +00:00
2023-01-19 10:36:51 +00:00
2023-02-13 18:32:36 +00:00
2023-01-18 17:38:29 +00:00
2022-06-02 16:50:19 +00:00
2022-06-02 16:50:19 +00:00
2022-05-24 09:10:51 +00:00
2023-01-26 09:12:41 +00:00
2020-08-07 18:09:35 +00:00
2022-11-11 01:59:28 +00:00
2023-01-19 22:55:20 +00:00
2023-01-27 17:47:38 +00:00
2023-01-27 17:47:38 +00:00
2023-01-24 18:00:25 +00:00
2022-11-03 15:44:25 +00:00
2022-11-11 01:59:28 +00:00
2022-11-11 01:59:28 +00:00
2022-11-11 01:59:28 +00:00
2021-05-10 09:13:09 +00:00
2021-03-02 13:11:42 +00:00
2023-01-19 10:36:51 +00:00
2022-05-11 19:31:04 +00:00
2021-09-30 13:19:42 +00:00
2021-09-16 19:40:05 +00:00
2021-09-16 17:18:37 +00:00
2020-11-13 22:10:54 +00:00
2020-11-13 22:10:54 +00:00
2022-10-07 09:26:18 +00:00
2022-07-06 17:34:20 +00:00
2021-12-08 00:25:10 +00:00
2022-09-21 17:52:01 +00:00
2022-01-20 00:57:57 +00:00
2020-11-13 22:10:54 +00:00
2022-12-29 10:18:02 +00:00
2021-01-15 23:32:02 +00:00
2022-12-01 01:35:26 +00:00
2023-01-31 18:28:59 +00:00
2023-01-31 18:28:59 +00:00
2023-01-24 18:00:25 +00:00
2022-08-19 18:10:15 +00:00
2020-06-25 03:36:41 +00:00
2022-03-25 10:29:30 +00:00
2022-09-27 21:34:05 +00:00
2022-06-08 18:01:02 +00:00
2020-11-10 18:41:24 +00:00
2022-06-13 15:30:57 +00:00
2022-03-08 22:42:46 +00:00
2023-02-13 18:24:32 +00:00
2021-01-15 23:32:02 +00:00
2021-01-15 23:32:02 +00:00
2022-03-26 09:41:21 +00:00
2021-09-02 14:14:35 +00:00
2021-07-29 16:55:55 +00:00
2021-07-02 19:06:45 +00:00
2021-07-02 19:06:45 +00:00
2021-07-02 19:06:45 +00:00
2021-07-02 19:06:45 +00:00
2021-07-02 19:06:45 +00:00
2021-01-15 23:32:02 +00:00
2023-02-09 00:23:22 +00:00
2023-02-08 19:14:13 +00:00
2021-07-07 23:12:53 +00:00
2022-12-01 14:38:44 +00:00
2022-12-01 14:38:44 +00:00
2021-01-15 23:32:02 +00:00
2022-10-03 12:36:18 +00:00
2022-01-20 00:57:57 +00:00
2023-01-25 18:32:57 +00:00
2021-01-15 23:32:02 +00:00
2023-01-20 10:30:41 +00:00
2023-02-06 21:49:07 +00:00
2023-01-31 18:47:46 +00:00
2021-01-15 23:32:02 +00:00
2023-02-09 00:23:22 +00:00
2023-02-13 23:28:30 +00:00
2022-08-05 11:53:37 +00:00
2022-08-05 11:53:37 +00:00
2022-08-05 11:53:37 +00:00
2022-08-05 11:53:37 +00:00
2023-01-31 22:37:30 +00:00
2022-03-10 23:48:05 +00:00
2023-01-31 22:37:30 +00:00
2023-01-31 22:37:30 +00:00
2021-03-31 20:51:32 +00:00
2023-01-31 22:37:30 +00:00
2023-01-31 22:37:30 +00:00
2023-01-31 22:37:30 +00:00
2023-02-15 17:52:59 +00:00
2023-01-31 22:37:30 +00:00
2022-08-05 11:53:37 +00:00
2022-08-05 11:53:37 +00:00
2023-01-31 18:47:46 +00:00
2022-12-13 19:28:37 +00:00
2022-06-02 23:39:45 +00:00
2022-06-02 23:39:45 +00:00
2022-09-27 21:34:05 +00:00
2020-11-13 19:07:20 +00:00
2020-11-11 23:42:12 +00:00
2022-08-19 18:10:15 +00:00
2022-08-19 18:10:15 +00:00
2021-07-02 19:06:45 +00:00
2021-07-02 19:06:45 +00:00
2023-02-02 17:34:57 +00:00
2021-11-18 19:45:26 +00:00
2023-02-02 17:34:57 +00:00
2023-01-19 16:24:29 +00:00
2022-03-23 18:30:21 +00:00
2023-01-04 16:00:26 +00:00
2021-08-24 16:49:23 +00:00
2022-11-22 18:05:24 +00:00
2022-11-22 18:05:24 +00:00
2023-01-17 20:33:03 +00:00
2022-12-01 14:38:44 +00:00
2023-01-17 20:33:03 +00:00
2023-02-14 09:01:13 +00:00
2021-09-02 19:22:16 +00:00
2021-08-20 16:19:16 +00:00
2023-01-27 00:43:59 +00:00
2023-01-27 00:43:59 +00:00
2021-01-15 23:32:02 +00:00
2023-01-06 07:48:22 +00:00
2021-09-02 19:22:16 +00:00
2021-01-15 23:32:02 +00:00
2020-11-03 10:27:44 +00:00
2023-01-25 14:08:27 +00:00
2021-06-09 02:50:50 +00:00
2022-12-29 10:18:02 +00:00
2022-10-03 21:24:47 +00:00
2020-10-16 19:22:52 +00:00
2023-01-18 20:16:11 +00:00
2021-12-16 10:39:49 +00:00
2021-12-16 10:39:49 +00:00
2022-03-22 19:45:03 +00:00
2022-03-22 19:45:03 +00:00
2022-03-22 19:45:03 +00:00
2022-11-17 02:28:37 +00:00
2022-03-22 19:45:03 +00:00
2022-03-22 19:45:03 +00:00
2022-12-29 10:18:02 +00:00
2022-03-22 19:45:03 +00:00
2021-05-11 11:15:53 +00:00
2023-01-31 18:47:46 +00:00
2023-01-31 18:47:46 +00:00
2023-01-31 18:47:46 +00:00
2022-07-20 18:08:27 +00:00
2021-07-16 20:50:58 +00:00
2022-08-19 18:10:15 +00:00
2022-06-15 11:08:28 +00:00
2023-01-24 18:00:25 +00:00
2023-02-01 22:04:29 +00:00
2023-02-01 22:04:29 +00:00
2021-08-16 11:11:04 +00:00
2021-08-16 11:11:04 +00:00
2022-01-20 00:57:57 +00:00
2023-01-06 07:48:22 +00:00
2021-08-16 11:11:04 +00:00
2021-08-16 11:11:04 +00:00
2023-01-09 13:21:55 +00:00
2022-07-07 16:02:51 +00:00
2023-02-13 18:24:32 +00:00
2022-07-07 16:02:51 +00:00
2022-12-29 10:18:02 +00:00
2022-11-23 18:39:07 +00:00
2022-07-29 18:11:01 +00:00
2022-07-29 18:11:01 +00:00
2022-07-29 18:11:01 +00:00
2022-09-12 19:45:12 +00:00
2021-09-15 22:32:04 +00:00
2022-09-27 21:34:05 +00:00
2022-07-15 18:30:20 +00:00
2023-02-03 23:35:53 +00:00
2022-12-01 02:54:18 +00:00
2022-12-29 10:18:02 +00:00
2022-12-29 10:18:02 +00:00
2020-12-14 16:22:48 +00:00
2022-12-29 10:18:02 +00:00
2021-09-08 13:39:34 +00:00
2022-12-29 10:18:02 +00:00
2022-11-17 17:20:18 +00:00
2022-11-17 17:20:18 +00:00
2023-01-18 23:34:12 +00:00
2022-07-14 16:04:54 +00:00
2022-03-22 19:45:03 +00:00
2022-03-22 19:45:03 +00:00
2022-03-22 19:45:03 +00:00
2022-12-07 22:46:22 +00:00
2022-03-22 19:45:03 +00:00
2021-01-15 23:32:02 +00:00
2022-03-22 19:45:03 +00:00
2022-09-12 23:08:17 +00:00
2022-11-11 18:37:44 +00:00
2023-02-06 21:49:07 +00:00
2023-01-27 00:43:59 +00:00
2023-01-17 20:33:03 +00:00
2022-04-25 23:12:53 +00:00
2021-12-17 00:15:09 +00:00
2021-11-02 17:42:52 +00:00
2021-11-02 17:42:52 +00:00
2021-08-16 11:11:04 +00:00
2021-10-20 16:54:32 +00:00
2023-01-31 18:16:39 +00:00
2021-10-20 16:54:32 +00:00
2021-10-20 16:54:32 +00:00
2022-04-07 23:15:48 +00:00
2021-10-20 16:54:32 +00:00
2022-12-29 10:18:02 +00:00
2022-04-18 20:34:57 +00:00
2023-01-09 15:48:57 +00:00
2022-11-22 18:05:24 +00:00
2022-11-22 18:05:24 +00:00
2021-10-14 00:10:12 +00:00
2021-10-14 00:10:12 +00:00
2022-12-29 10:18:02 +00:00
2023-01-16 16:28:43 +00:00
2023-01-18 20:16:11 +00:00
2022-07-22 19:13:47 +00:00
2022-07-22 19:13:47 +00:00
2022-07-22 19:13:47 +00:00
2022-07-25 17:42:49 +00:00
2023-02-10 18:05:00 +00:00
2023-02-15 17:52:59 +00:00
2023-02-15 17:52:59 +00:00
2021-10-05 16:32:40 +00:00
2021-10-05 16:32:40 +00:00
2021-12-15 23:12:19 +00:00
2021-12-15 23:12:19 +00:00
2022-08-03 10:32:46 +00:00
2022-08-03 10:32:46 +00:00
2022-12-29 10:18:02 +00:00
2023-01-20 12:37:49 +00:00
2022-12-29 10:18:02 +00:00
2023-01-20 12:37:49 +00:00
2020-06-29 16:10:13 +00:00
2023-02-13 21:14:38 +00:00
2023-01-25 17:56:39 +00:00
2023-01-20 18:20:17 +00:00
2022-12-29 10:18:02 +00:00
2022-10-06 00:50:45 +00:00
2021-12-15 22:22:36 +00:00
2021-09-02 21:46:35 +00:00
2022-08-05 11:53:37 +00:00
2020-08-06 19:55:12 +00:00
2022-09-27 21:34:05 +00:00
2022-12-01 01:35:26 +00:00
2021-10-25 17:30:50 +00:00
2022-12-15 00:52:58 +00:00
2022-09-27 21:34:05 +00:00
2021-10-25 17:30:50 +00:00
2021-02-22 19:58:49 +00:00
2022-12-01 01:35:26 +00:00
2022-09-10 15:12:35 +00:00
2022-09-10 15:12:35 +00:00
2022-11-11 01:59:28 +00:00
2022-11-23 20:24:29 +00:00
2020-08-07 21:40:45 +00:00
2020-08-07 21:40:45 +00:00
2022-05-05 23:20:25 +00:00
2022-09-27 12:55:43 +00:00