dart-sdk/runtime/docs
Alexander Aprelev 0914835773 [vm/inliner] Tweak inlining heuristic, improve List.of inlining.
Builds on top of https://dart-review.googlesource.com/c/sdk/+/228660, introduces vm:vm:always-consider-inlining that tell inliner not to give up inlining of a function.

HashMap constructor got prefer-inline pragma to accommodate shift in inlining away from where it used to be inlined due to large size of inlined HashMap, greater than FLAG_inline_getters_setters_smaller_than heuristic.

Notable performance changes:

JIT (x64)
===
ListCopy.List.of.fixed.100 27.37%
ListCopy.List.of.fixed.2 16.31%

AOT (x64)
===
Empty  -9.978%
InstantiateTypeArgs.Instantiate1  -8.262%
...
ListCopy.List.of.fixed.2 13.73%
ListCopy.spread.num.2 15.51%
ListCopy.List.of.2 15.08%
MapCopy.Map.String.of.Map.100 55.62%
MapCopy.Map.Thing.of.Map.100 56.06%

flutter release
===
flutter_gallery_apk_size (Pixel 2)
-0.0074% (1.0 noise)41809568.00 41812676.00


Addresses https://github.com/dart-lang/sdk/issues/49408

TEST=Inliner_always_consider_inlining, Inliner_List_of_inlined
Change-Id: I7f8fc7cb0ac4a69310c108cf519518c384dc0164
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/253740
Reviewed-by: Alexander Markov <alexmarkov@google.com>
Commit-Queue: Alexander Aprelev <aam@google.com>
2022-08-15 21:14:36 +00:00
..
compiler [vm/inliner] Tweak inlining heuristic, improve List.of inlining. 2022-08-15 21:14:36 +00:00
images [vm/docs] Publish "Introduction to Dart VM" source and build tools. 2020-02-04 09:04:32 +00:00
infra [vm/compiler] Fix DelayAllocations pass 2022-03-04 10:00:41 +00:00
aot_binary_size_analysis.md [build] Remove runtime_kernel target from GN build 2021-08-13 10:09:41 +00:00
async.md [vm] Document the new implementation of async/async*/sync* based on suspend/resume stubs 2022-07-21 16:18:23 +00:00
dwarf_stack_traces.md [build] Remove runtime_kernel target from GN build 2021-08-13 10:09:41 +00:00
gc.md [vm] Implement NativeFinalizer 2022-03-26 09:41:21 +00:00
glossary.md [vm] Add a glossary of terms used by the VM. 2022-07-21 19:45:15 +00:00
index.md [vm] Cleanup old async/async*/sync* implementation from kernel 2022-07-11 18:12:41 +00:00
pragmas.md [vm/inliner] Tweak inlining heuristic, improve List.of inlining. 2022-08-15 21:14:36 +00:00
snapshot_profiling.md Fix typo in snapshot_profiling.md. heapsnaphsot -> heapsnapshot 2019-11-25 15:58:15 +00:00
types.md master branch to main 2021-09-15 06:22:23 +00:00