Samir Jindel
c885bdde1d
[vm] DBC is obsolete. Remove dead code.
...
Change-Id: Ica33af158cca53c8e951e4b2582de83660e8a60d
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/121851
Commit-Queue: Samir Jindel <sjindel@google.com >
Reviewed-by: Martin Kustermann <kustermann@google.com >
2019-10-27 18:18:29 +00:00
Ryan Macnak
6354b0b97d
[vm, gc] Add a release barrier to prevent header initialization of an old object from being ordered after publishing stores of that object.
...
Compare f4f0831c69 , which implicitly removed a barrier from PageSpace::AllocateBlack.
Bug: https://github.com/dart-lang/sdk/issues/39090
Change-Id: I3a9274b90875a6860cb102a238b6f95a6a7b2ff2
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/123004
Reviewed-by: Alexander Markov <alexmarkov@google.com >
Commit-Queue: Ryan Macnak <rmacnak@google.com >
2019-10-25 22:16:05 +00:00
Aart Bik
74433e70da
[vm/compiler] fix assertion bug in SSA builder
...
Rationale:
Our "front-end" may leave CreateArray on stack
in control-flow-collection (viz. BuildMapLiteral()
and BuildListLiteral()).
https://github.com/dart-lang/sdk/issues/39071
Change-Id: I423a431aa9fac985996fb09df6a98c46aed3d696
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/122960
Reviewed-by: Alexander Markov <alexmarkov@google.com >
Commit-Queue: Aart Bik <ajcbik@google.com >
2019-10-25 20:11:17 +00:00
Alexander Markov
1cf7c40d32
[vm] Fix crash when AST constant references a not yet loaded bytecode class
...
Classes declared in bytecode are loaded lazily. So, in case there is
a mix of bytecode and AST kernel files, it's OK if AST constant
references a class which is not loaded yet, if that class is declared in
bytecode.
Change-Id: I6e28da7c6a97d19d88e16d6cd8abd0e9b61df388
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/122847
Commit-Queue: Alexander Markov <alexmarkov@google.com >
Reviewed-by: Aart Bik <ajcbik@google.com >
2019-10-25 19:55:09 +00:00
Ryan Macnak
c873220e43
[vm, arm64] Adjust CSP during the invocation stub instead of each function prologue.
...
Since 6e2c4636cd , we have more reliable information about the stack limit.
This saves 8 bytes from each function.
Flutter Gallery:
Instructions(CodeSize): 6491472 -> 6375472 (-1.79%)
Total(CodeSize): 10375882 -> 10258802 (-1.13%)
Bug: https://github.com/dart-lang/sdk/issues/26472
Bug: https://github.com/dart-lang/sdk/issues/39083
Change-Id: I1d8e4c4bfd858eca1d0e4e5640faae15f4dbbe8e
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/122845
Commit-Queue: Ryan Macnak <rmacnak@google.com >
Reviewed-by: Alexander Markov <alexmarkov@google.com >
2019-10-25 19:21:56 +00:00
Dmitry Stefantsov
9910fa8454
[cfe] Implement the first part of NNBD-aware isSubtypeOf
...
This CL is a squashing of the following smaller CLs:
* https://dart-review.googlesource.com/c/sdk/+/120669/
* https://dart-review.googlesource.com/c/sdk/+/120670/
* https://dart-review.googlesource.com/c/sdk/+/121331/
* https://dart-review.googlesource.com/c/sdk/+/121381/
* https://dart-review.googlesource.com/c/sdk/+/121383/
* https://dart-review.googlesource.com/c/sdk/+/121620/
* https://dart-review.googlesource.com/c/sdk/+/121707/
* https://dart-review.googlesource.com/c/sdk/+/122144/
* https://dart-review.googlesource.com/c/sdk/+/122360/
* https://dart-review.googlesource.com/c/sdk/+/122381/
* https://dart-review.googlesource.com/c/sdk/+/122783/
* https://dart-review.googlesource.com/c/sdk/+/122787/
Change-Id: I9d850f531f0fce07055ff9b5cd39abb605752005
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/122868
Reviewed-by: Johnni Winther <johnniwinther@google.com >
Commit-Queue: Dmitry Stefantsov <dmitryas@google.com >
2019-10-25 16:37:39 +00:00
Samir Jindel
36cd2e22d4
[vm/aot] Expose static symbols in directly-generated ELF snapshots.
...
Also use the function labels for Dwarf in Assembly snapshots to avoid creating
duplicate labels.
Fixes https://github.com/dart-lang/sdk/issues/38978
Issue https://github.com/dart-lang/sdk/issues/38526
Change-Id: Icafd3d3a86381990ec8097397a21b16ad4a7a766
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/122150
Reviewed-by: Ryan Macnak <rmacnak@google.com >
Commit-Queue: Samir Jindel <sjindel@google.com >
2019-10-25 11:53:14 +00:00
Fizaa Luthra
b42c2af535
[vm/compiler] Refactoring binary operation and unary operation evaluation logic
...
Rationale:
1) Centralize constant expression evaluation logic.
2) Avoid code duplication with constant folding in unoptimized code.
Bug:
https://github.com/dart-lang/sdk/issues/36409
Change-Id: I0ee4916e9e731df3dd8eb30dd5f182bc40e1dfa3
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/122172
Reviewed-by: Aart Bik <ajcbik@google.com >
Commit-Queue: Fizaa Luthra <fizaaluthra@google.com >
2019-10-24 22:30:57 +00:00
Samir Jindel
79e5a3f1f7
[vm] Regression test for free-list protection.
...
Change-Id: Iea1a81ced0f53db1b2419f0b7a01be0a48c576a5
Fixed: 2
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/122645
Commit-Queue: Samir Jindel <sjindel@google.com >
Reviewed-by: Martin Kustermann <kustermann@google.com >
2019-10-24 12:13:53 +00:00
Teagan Strickland
772f961840
[vm/compiler] Use JSONWriter instead of manually creating JSON.
...
Change-Id: I9c05a2f88db3591b72015ac8d55f16f63af1c944
Cq-Include-Trybots: luci.dart.try:vm-kernel-precomp-linux-debug-x64-try
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/122764
Reviewed-by: Daco Harkes <dacoharkes@google.com >
Commit-Queue: Teagan Strickland <sstrickl@google.com >
2019-10-24 11:07:49 +00:00
Teagan Strickland
081c01e89a
[vm/compiler] Fix remaining mismatches in late round trip.
...
Bug: https://github.com/dart-lang/sdk/issues/36882
Cq-Include-Trybots: luci.dart.try:vm-kernel-precomp-linux-debug-x64-try
Change-Id: I20c5a8298f0f6444a326a63fe86ad106c3940317
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/117543
Commit-Queue: Teagan Strickland <sstrickl@google.com >
Reviewed-by: Martin Kustermann <kustermann@google.com >
2019-10-24 09:48:06 +00:00
Ryan Macnak
86af66a3ee
Revert "[vm, arm64] Adjust CSP during the invocation stub instead of each function prologue."
...
This reverts commit b5b322962a .
Reason for revert: low frequency of crashes in service tests
Original change's description:
> [vm, arm64] Adjust CSP during the invocation stub instead of each function prologue.
>
> Since 6e2c4636cd , we have more reliable information about the stack limit.
>
> This saves 8 bytes from each function.
>
> Flutter Gallery:
> Instructions(CodeSize): 6491472 -> 6375472 (-1.79%)
> Total(CodeSize): 10375882 -> 10258802 (-1.13%)
>
> Bug: http://dartbug.com/26472
> Change-Id: Ief1ddd25eecd32a8314c71fdb470dd73046e5dc0
> Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/122408
> Commit-Queue: Ryan Macnak <rmacnak@google.com >
> Reviewed-by: Alexander Markov <alexmarkov@google.com >
TBR=rmacnak@google.com ,alexmarkov@google.com ,ajcbik@google.com
Change-Id: I0b45e1c81c1534e123dd85d27b7af27217e08795
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: http://dartbug.com/26472
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/122725
Reviewed-by: Ryan Macnak <rmacnak@google.com >
Commit-Queue: Ryan Macnak <rmacnak@google.com >
2019-10-24 04:12:16 +00:00
Ryan Macnak
b5b322962a
[vm, arm64] Adjust CSP during the invocation stub instead of each function prologue.
...
Since 6e2c4636cd , we have more reliable information about the stack limit.
This saves 8 bytes from each function.
Flutter Gallery:
Instructions(CodeSize): 6491472 -> 6375472 (-1.79%)
Total(CodeSize): 10375882 -> 10258802 (-1.13%)
Bug: http://dartbug.com/26472
Change-Id: Ief1ddd25eecd32a8314c71fdb470dd73046e5dc0
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/122408
Commit-Queue: Ryan Macnak <rmacnak@google.com >
Reviewed-by: Alexander Markov <alexmarkov@google.com >
2019-10-24 02:40:43 +00:00
Aart Bik
434dc832c6
Revert "[vm] Avoid allocating monitors globally - embedders in certain situations will run into reported leakes due to them"
...
This reverts commit d9a306fc59 .
Reason for revert:
=================================================================
==176913==ERROR: LeakSanitizer: detected memory leaks
Direct leak of 13 byte(s) in 1 object(s) allocated from:
#0 0x55d94882d540 in __interceptor_strdup /b/s/w/ir/kitchen-workdir/llvm-project/compiler-rt/lib/asan/asan_interceptors.cc:447:3
#1 0x55d9491abcd7 in dart::KernelIsolate::AddExperimentalFlag(char const*) ../../out/DebugX64/../../runtime/vm/kernel_isolate.cc:382:28
#2 0x55d9490af7d2 in dart::Flags::SetFlagFromString(dart::Flag*, char const*) ../../out/DebugX64/../../runtime/vm/flags.cc:338:7
#3 0x55d9490b0221 in dart::Flags::Parse(char const*) ../../out/DebugX64/../../runtime/vm/flags.cc:399:12
#4 0x55d9490b0538 in dart::Flags::ProcessCommandLineFlags(int, char const**) ../../out/DebugX64/../../runtime/vm/flags.cc:438:5
#5 0x55d9488885df in dart::bin::main(int, char**) ../../out/DebugX64/../../runtime/bin/main.cc:1149:11
#6 0x55d94888ad9a in main ../../out/DebugX64/../../runtime/bin/main.cc:1245:3
#7 0x7f5ccc4a452a in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x2352a)
SUMMARY: AddressSanitizer: 13 byte(s) leaked in 1 allocation(s).
Original change's description:
> [vm] Avoid allocating monitors globally - embedders in certain situations will run into reported leakes due to them
>
> Change-Id: Ied0446aebfdd8fb7e15c510cdf4160ff9ad013a6
> Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/122148
> Reviewed-by: Ryan Macnak <rmacnak@google.com >
> Commit-Queue: Martin Kustermann <kustermann@google.com >
TBR=kustermann@google.com ,rmacnak@google.com ,asiva@google.com
Change-Id: I2c98bf7e0e565c6f8c016b4832d5587868c65a83
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/122680
Reviewed-by: Aart Bik <ajcbik@google.com >
Commit-Queue: Aart Bik <ajcbik@google.com >
2019-10-23 19:34:28 +00:00
Alexander Markov
10d237dffb
[vm] Minor cleanup of KernelLoader
...
Removed a couple of unused KernelLoader members; several members
changed from public to private.
Change-Id: I3950a260e8476229ca7de2ee795cac581d307b29
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/122492
Reviewed-by: Ryan Macnak <rmacnak@google.com >
Commit-Queue: Alexander Markov <alexmarkov@google.com >
2019-10-23 19:09:56 +00:00
Alexander Markov
9b3b52501f
[vm,bytecode] Update vm/cc/IRTest_InitializingStores for bytecode
...
Fixes https://github.com/dart-lang/sdk/issues/38946
Change-Id: I798761d2476b30cde5a7fefaad609ffa4e80a85d
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/122484
Commit-Queue: Alexander Markov <alexmarkov@google.com >
Reviewed-by: Aart Bik <ajcbik@google.com >
2019-10-23 19:09:47 +00:00
Daco Harkes
1a747c6546
[vm/ffi] Enable spilling floats in slow paths
...
Closes: https://github.com/dart-lang/sdk/issues/39068
Change-Id: I00d6fd82b7b5a56592bc4ab32bdc8b66fed67201
Cq-Include-Trybots: luci.dart.try:vm-ffi-android-debug-arm-try,vm-ffi-android-debug-arm64-try,app-kernel-linux-debug-x64-try,vm-kernel-linux-debug-ia32-try,vm-dartkb-linux-debug-simarm64-try,vm-kernel-win-debug-x64-try,vm-kernel-win-debug-ia32-try,vm-dartkb-linux-debug-x64-try,vm-kernel-precomp-linux-debug-x64-try,vm-dartkb-linux-release-x64-abi-try,vm-kernel-precomp-android-release-arm64-try,vm-kernel-asan-linux-release-x64-try,vm-kernel-linux-release-simarm-try,vm-kernel-linux-release-simarm64-try,vm-kernel-precomp-android-release-arm_x64-try,vm-kernel-precomp-obfuscate-linux-release-x64-try,vm-kernel-reload-rollback-linux-debug-x64-try,vm-kernel-precomp-mac-release-simarm_x64-try,dart-sdk-linux-try,flutter-engine-linux-try,analyzer-analysis-server-linux-try,analyzer-linux-release-try,front-end-linux-release-x64-try
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/122646
Reviewed-by: Martin Kustermann <kustermann@google.com >
Commit-Queue: Daco Harkes <dacoharkes@google.com >
2019-10-23 18:09:05 +00:00
Daco Harkes
2be376385c
[vm/ffi] Support moves with temp in ffi call
...
Fixes: https://github.com/dart-lang/sdk/issues/39063
Change-Id: I33e86d48620dcbe90966fec3d379c5165506e380
Cq-Include-Trybots: luci.dart.try:vm-ffi-android-debug-arm-try,vm-ffi-android-debug-arm64-try,app-kernel-linux-debug-x64-try,vm-kernel-linux-debug-ia32-try,vm-dartkb-linux-debug-simarm64-try,vm-kernel-win-debug-x64-try,vm-kernel-win-debug-ia32-try,vm-dartkb-linux-debug-x64-try,vm-kernel-precomp-linux-debug-x64-try,vm-dartkb-linux-release-x64-abi-try,vm-kernel-precomp-android-release-arm64-try,vm-kernel-asan-linux-release-x64-try,vm-kernel-linux-release-simarm-try,vm-kernel-linux-release-simarm64-try,vm-kernel-precomp-android-release-arm_x64-try,vm-kernel-precomp-obfuscate-linux-release-x64-try,vm-kernel-reload-rollback-linux-debug-x64-try,vm-kernel-precomp-mac-release-simarm_x64-try,dart-sdk-linux-try,flutter-engine-linux-try,analyzer-analysis-server-linux-try,analyzer-linux-release-try,front-end-linux-release-x64-try
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/122640
Reviewed-by: Martin Kustermann <kustermann@google.com >
2019-10-23 17:42:41 +00:00
Samir Jindel
b359ac0a1e
[vm] Don't leave code pages unprotected when a free-list element's header straddles a page boundary.
...
The old code breaks in this situation. ^ indicates page boundary:
| <allocated code> | <header> | <remainder> | <other code> |
| ^ ^ ^ |
It would have unprotected the start of <other code> without re-protecting it after updating the header.
Fixes https://github.com/dart-lang/sdk/issues/38528
Change-Id: I989becc3ade434fac6ec0eba5b7f8130178f6f68
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/122643
Commit-Queue: Samir Jindel <sjindel@google.com >
Reviewed-by: Martin Kustermann <kustermann@google.com >
2019-10-23 14:46:53 +00:00
Martin Kustermann
e82fedc345
[vm] Remove deprecated (and untested) ARMv5 support from the VM
...
Since we have no CQ/CI test coverage of ARMv5 and none of our customers
uses it, a breaking change request was made (see issue further down).
The breaking change has been approved and a corresponding email has been
sent out:
https://groups.google.com/a/dartlang.org/forum/?nomobile=true#!topic/announce/vRQja7di3FQ
This CL removes any armv5 related code from our codebase.
Closes https://github.com/dart-lang/sdk/issues/36666
Change-Id: I9abf32f1980ca19a9cf882b43c9966b2127f89e3
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/122540
Reviewed-by: Ryan Macnak <rmacnak@google.com >
Commit-Queue: Martin Kustermann <kustermann@google.com >
2019-10-23 14:44:33 +00:00
Daco Harkes
5fd6c8a3c1
[vm] Do not fuse constants with different representations
...
Issue: https://github.com/dart-lang/sdk/issues/39044
Change-Id: I19b1309adb769742b498ed0b6fe80ae38a779405
Cq-Include-Trybots: luci.dart.try:vm-ffi-android-debug-arm-try,vm-ffi-android-debug-arm64-try,app-kernel-linux-debug-x64-try,vm-kernel-linux-debug-ia32-try,vm-dartkb-linux-debug-simarm64-try,vm-kernel-win-debug-x64-try,vm-kernel-win-debug-ia32-try,vm-dartkb-linux-debug-x64-try,vm-kernel-precomp-linux-debug-x64-try,vm-dartkb-linux-release-x64-abi-try,vm-kernel-precomp-android-release-arm64-try,vm-kernel-asan-linux-release-x64-try,vm-kernel-linux-release-simarm-try,vm-kernel-linux-release-simarm64-try,vm-kernel-precomp-android-release-arm_x64-try,vm-kernel-precomp-obfuscate-linux-release-x64-try,vm-kernel-reload-rollback-linux-debug-x64-try,vm-kernel-precomp-mac-release-simarm_x64-try,dart-sdk-linux-try,flutter-engine-linux-try,analyzer-analysis-server-linux-try,analyzer-linux-release-try,front-end-linux-release-x64-try
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/122396
Commit-Queue: Daco Harkes <dacoharkes@google.com >
Reviewed-by: Martin Kustermann <kustermann@google.com >
2019-10-23 12:59:28 +00:00
Martin Kustermann
d9a306fc59
[vm] Avoid allocating monitors globally - embedders in certain situations will run into reported leakes due to them
...
Change-Id: Ied0446aebfdd8fb7e15c510cdf4160ff9ad013a6
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/122148
Reviewed-by: Ryan Macnak <rmacnak@google.com >
Commit-Queue: Martin Kustermann <kustermann@google.com >
2019-10-22 20:31:56 +00:00
Ryan Macnak
6a65ea9cad
[vm] Remove shared snapshot and reused instructions features.
...
Shared snapshots have been disused by Fuchsia deduping.
Reused instruction has been disused by Flutter code push.
Change-Id: Ia4cb570935c233a9365d521ca04a477c5550ef83
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/122421
Commit-Queue: Ryan Macnak <rmacnak@google.com >
Reviewed-by: Martin Kustermann <kustermann@google.com >
2019-10-22 19:02:26 +00:00
Kallen Tu
4601bd7bff
Modified supertype check error message to be more descriptive.
...
Change-Id: I3068bf195eb9a746d25ac62007eaeac0296d3087
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/121463
Reviewed-by: Aske Simon Christensen <askesc@google.com >
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com >
Reviewed-by: Leaf Petersen <leafp@google.com >
Commit-Queue: Kallen Tu <kallentu@google.com >
2019-10-22 16:59:16 +00:00
Martin Kustermann
e2faac751e
[vm/aot] Fully enable deduplication of instructions in bare mode
...
Currently the switchable calls require there to be a unique PC -> Code
-> Function mapping to re-construct the arguments descriptor which was
lost when transitioning from unlinked to monormophic.
=> This prevents instruction deuplication in bare mode for those
functions, because the PC -> Function mapping is amgiguous (the
frames don't have a Code object on the stack we can use)
This CL preserves the (name, args-descriptor) per switchable call site when we
go from unlinked to monomorphic state by remembering it in a map. When
transitioning out of monomorphic we can use this map to re-construct the
name and arguments descriptor (and delete the map entry).
Flutter gallery release size impact:
* arm64: total -2.33 % (-3.62% RX)
* arm: total -1.72 % (-2.65% RX)
From local testing it seems like running flutter gallery in profile mode
and connecting via observatory the memory consumed by UnlinkedCall
instances seems minimal.
Change-Id: I55902e6f11c9941493c610ed18f26bc5fc3dcf59
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/121421
Reviewed-by: Vyacheslav Egorov <vegorov@google.com >
Reviewed-by: Ryan Macnak <rmacnak@google.com >
Commit-Queue: Martin Kustermann <kustermann@google.com >
2019-10-22 11:13:14 +00:00
Liam Appelbe
aa569dfff0
[vm] Enable non-nullable experiment when building platform dill with --nnbd flag.
...
Change-Id: I00632cc2dcf5e929698ee6b88eefbd5c58752297
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/122174
Commit-Queue: Liam Appelbe <liama@google.com >
Reviewed-by: Ryan Macnak <rmacnak@google.com >
Reviewed-by: Alexander Markov <alexmarkov@google.com >
2019-10-21 19:14:04 +00:00
Alexander Markov
a170fc54b9
[vm] Fix DirectChainedHashMap iterator
...
BaseDirectChainedHashMap<KeyValueTrait, B, Allocator>::Iterator::Next()
was first checking if array_index_ is larger than the size of map's array,
and only then it was looking at remaining entries in the collision list.
So, when there is a collision in the last bucket, array_index_ was bumped
and the first entry in the list was returned. After that, Next() returned
NULL, skipping remaining entries in the collision list.
This caused incorrect stack state management in BytecodeFlowGraphBuilder
and BytecodeFlowGraphBuilder::DropUnusedValuesFromStack() was removing
too many entries from the stack, which caused crash in
BytecodeFlowGraphBuilder::BuildStoreIndexedTOS().
Issue: https://github.com/dart-lang/sdk/issues/38979
Change-Id: Ie073ca7014da5b04999b7984d508984b4c9743b8
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/122176
Reviewed-by: Ryan Macnak <rmacnak@google.com >
Reviewed-by: Martin Kustermann <kustermann@google.com >
Commit-Queue: Alexander Markov <alexmarkov@google.com >
2019-10-21 18:30:54 +00:00
Ryan Macnak
6c933a4488
[vm] Fix some TSAN failures. Migrate remaining uses of AtomicOperations to std::atomic.
...
Change-Id: I195232311a146248c601ef84640758db59083d12
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/121200
Reviewed-by: Siva Annamalai <asiva@google.com >
Commit-Queue: Ryan Macnak <rmacnak@google.com >
2019-10-21 16:26:39 +00:00
Artem Serov
46050115ab
[vm/compiler] Arm64: Improve StoreIndexedInstr.
...
Reuse offset addressing mode with LoadIndexedInstr;
this will save 1 instruction generated for the case:
add x0, x1, x2, LSL #SCALE
ldr x3, [x0, #OFFSET]
vs
add x0, x1, #OFFSET
add x0, x0, x2, LSL #SCALE
ldr x3, [x0]
Change-Id: I35d9e9553f312529d1c71fdd4475545e3c439179
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/121992
Commit-Queue: Vyacheslav Egorov <vegorov@google.com >
Reviewed-by: Vyacheslav Egorov <vegorov@google.com >
2019-10-18 11:54:48 +00:00
Dmitry Stefantsov
b212403cf8
[cfe] Change integer values that encode nullability attributes
...
This CL also completes the renaming of "neither" into "undetermined" by
renaming kNeither value in the nullability enum in
runtime/vm/kernel_binary.h into kUndetermined.
Change-Id: Ia266bf1b35577212b696fb4a093340ee8e986256
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/121989
Reviewed-by: Johnni Winther <johnniwinther@google.com >
Commit-Queue: Dmitry Stefantsov <dmitryas@google.com >
2019-10-18 08:46:16 +00:00
Chris Bracken
e41086ef7c
[vm] Enable timeline trace events with Fuchsia SDK
...
Re-enables tracing when built against the public Fuchsia SDK. Was
previously only available on in-tree Fuchsia builds since tracing had
not been exposed in the public SDK.
Change-Id: I54026268f96f762a84c92c24df377249990159a0
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/122081
Reviewed-by: Siva Annamalai <asiva@google.com >
Commit-Queue: Siva Annamalai <asiva@google.com >
2019-10-18 01:33:03 +00:00
asiva
cd95fcc810
[VM] Start the kernel isolate only when compilations are needed
...
- Start the kernel isolate only when a compilation is needed
- Remove some dead code and state in the loader path
Change-Id: I39e14cd79cda18b155af6334a11635c44e2fc11f
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/121923
Reviewed-by: Ryan Macnak <rmacnak@google.com >
Commit-Queue: Siva Annamalai <asiva@google.com >
2019-10-18 00:27:16 +00:00
Ryan Macnak
8e7ffafbaf
Reland "[vm, compiler] Reduce alignment of Instructions and remove some debugging trap instructions."
...
Further adjustments for simarm_x64.
Flutter Gallery:
ARM32
Instructions(CodeSize): 6979424 -> 6771856 (-2.97%)
Total(CodeSize): 10855163 -> 10363319 (-4.53%)
ARM64
Instructions(CodeSize): 7334368 -> 6817312 (-7.05%)
Total(CodeSize): 11505069 -> 10771431 (-6.37%)
Bug: https://github.com/dart-lang/sdk/issues/37103
Bug: https://github.com/dart-lang/sdk/issues/38452
Change-Id: I2bb44e7b2c002d53830b66cf4aedc4455c815326
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/119440
Commit-Queue: Ryan Macnak <rmacnak@google.com >
Reviewed-by: Martin Kustermann <kustermann@google.com >
2019-10-17 21:45:38 +00:00
Liam Appelbe
45358c5834
[vm] Implementation of NullCheck for bytecode
...
Bug: https://github.com/dart-lang/sdk/issues/38840
Change-Id: I56af108096355a0486d45f88e795908ce712db4b
Fixes: https://github.com/dart-lang/sdk/issues/38840
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/121904
Reviewed-by: Alexander Markov <alexmarkov@google.com >
Commit-Queue: Liam Appelbe <liama@google.com >
2019-10-17 19:18:26 +00:00
Alexander Markov
882a6b57d2
Enable bytecode in AOT compilation pipeline
...
Change-Id: I3f1bb7d56522cf5dfedf68c022fbed59c3d04717
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/118103
Commit-Queue: Alexander Markov <alexmarkov@google.com >
Reviewed-by: Ryan Macnak <rmacnak@google.com >
Reviewed-by: Siva Annamalai <asiva@google.com >
2019-10-17 17:22:12 +00:00
Artem Serov
b4ad2f2545
[vm/compiler] ARM64: Improve shifts assembly instructions.
...
Use asr/lsr/lsl instructions instead of add ZR with shifted
operand as those are prefered instructions for Arm.
Change-Id: Ice2629bf5a23a745c3bf5138d8a220f7522dca52
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/121710
Commit-Queue: Vyacheslav Egorov <vegorov@google.com >
Reviewed-by: Vyacheslav Egorov <vegorov@google.com >
Reviewed-by: Aart Bik <ajcbik@google.com >
2019-10-17 17:19:32 +00:00
Artem Serov
9ae7b10cea
[vm] Fix a bug in Utils::NBitMask.
...
The function was broken on arm64 due to incorrect
mask calculation (based on the target ISA).
Change-Id: Ib5c26bf4c7b901ae27f2a0580c4f88b2b7952212
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/121709
Commit-Queue: Vyacheslav Egorov <vegorov@google.com >
Reviewed-by: Aart Bik <ajcbik@google.com >
2019-10-17 17:19:32 +00:00
Alexander Markov
4dc1901cdb
[vm,bytecode] Write closure attributes separately
...
There are could be conflicts in inferred types attributes between
function and its closures, so attributes for closures should be
written separately.
Change-Id: Iae395d73fdc2dfcb6b55137176f198f02e9b079b
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/121907
Reviewed-by: Ryan Macnak <rmacnak@google.com >
Commit-Queue: Alexander Markov <alexmarkov@google.com >
2019-10-17 17:07:32 +00:00
Ryan Macnak
ecd7977928
[vm] Fix gcc build.
...
Change-Id: I8a0a9a695403dc6d048dccb9f33642d70cc5d588
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/121866
Reviewed-by: Liam Appelbe <liama@google.com >
Commit-Queue: Ryan Macnak <rmacnak@google.com >
2019-10-17 16:51:32 +00:00
Alexander Aprelev
411bd6247b
[isolate] Fix delete () call to operator delete form.
...
This is follow-up to 9e636b5ab4 .
Change-Id: Ia167e9faea9b3085fdc1076666d05360646153e9
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/121942
Reviewed-by: Martin Kustermann <kustermann@google.com >
Commit-Queue: Alexander Aprelev <aam@google.com >
2019-10-17 16:43:42 +00:00
Vyacheslav Egorov
1f58504ee6
[vm/compiler] Do not initialize delayed_type_arguments_ for non-generic closures
...
This field is only used to implement partial instantiation of generic
closures - so it is irrelevant in non-generic ones.
Keeping it null instead of empty_type_arguments allows to completely
elide a store (which saves around 2 instructions per closure allocation)
Change-Id: I1039993a1cfd1bc4b476214712d90b2c443e7cc6
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/121983
Commit-Queue: Vyacheslav Egorov <vegorov@google.com >
Reviewed-by: Martin Kustermann <kustermann@google.com >
2019-10-17 15:25:30 +00:00
Vyacheslav Egorov
47e44d5669
[vm/compiler] Mark more stores as initializing.
...
We inline allocation of contexts and closures manually so stores
which are effectively initializing were not marked as such.
Additionally permit elimination of initializing stores into context
objects in AOT mode because all contexts are null-initialized there.
This relands commit eb87e79e8e with a fix
in GenerateAllocateContextStub on ARM: it was initializing every second element
in the context with garbage value.
Change-Id: Id55bba960facd677ee6dd2c8ff42635130f8c048
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/121982
Reviewed-by: Martin Kustermann <kustermann@google.com >
Commit-Queue: Vyacheslav Egorov <vegorov@google.com >
2019-10-17 13:04:49 +00:00
Alexander Aprelev
9e636b5ab4
Reland "[vm/service] Introduce IsolateGroup entity to vm service api.""
...
This reverts commit f020ce5d23 with patchset 1 having original revert, rest - fixes
for calling destructors on unlinked IntrusiveDL elements and for assuming int is int64(which breaks down on simarm, ia32 bots).
Fixes https://github.com/dart-lang/sdk/issues/38926
Issue https://github.com/dart-lang/sdk/issues/36097
Change-Id: I867526c7de3786806670d1f43dbff07228f80028
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/121870
Commit-Queue: Alexander Aprelev <aam@google.com >
Reviewed-by: Ryan Macnak <rmacnak@google.com >
2019-10-17 03:45:41 +00:00
Ryan Macnak
6d029cac3b
[vm] Fixing warnings in newer Clang versions.
...
Fix assumptions that INT_MIN/MAX is INT32_MIN/MAX.
Change-Id: I3a30e5ab95b0917342d406c3b7478bb992758765
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/121868
Reviewed-by: Liam Appelbe <liama@google.com >
Reviewed-by: Alexander Markov <alexmarkov@google.com >
Commit-Queue: Ryan Macnak <rmacnak@google.com >
2019-10-17 00:26:06 +00:00
Alexander Aprelev
f020ce5d23
Revert "[vm/service] Introduce IsolateGroup entity to vm service api."
...
This reverts commit f219e5152d as it breaks few bots.
Change-Id: I8d1d42d1ac662c2dba9ea9270c7a6cdc4f0621bd
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/121886
Reviewed-by: Ben Konyi <bkonyi@google.com >
2019-10-16 19:45:23 +00:00
Ben Konyi
c4a7f1c6bf
Revert "[vm/compiler] Mark more stores as initializing."
...
This reverts commit eb87e79e8e .
Reason for revert: Multiple configurations are red
IRTest_InitializingStores:
https://ci.chromium.org/p/dart/builders/ci.sandbox/vm-dartkb-linux-debug-simarm64/1684
https://ci.chromium.org/p/dart/builders/ci.sandbox/vm-dartkb-linux-product-simarm64/1796
http_server_test:
https://ci.chromium.org/p/dart/builders/ci.sandbox/vm-kernel-precomp-linux-release-simarm/6796
Original change's description:
> [vm/compiler] Mark more stores as initializing.
>
> We inline allocation of contexts and closures manually so stores
> which are effectively initializing were not marked as such.
>
> Additionally permit elimination of initializing stores into context
> objects in AOT mode because all contexts are null-initialized there.
>
> Bug: https://github.com/dart-lang/sdk/issues/38454
> Change-Id: I27886d85160b8600e6e0d38d7bf389d20006fa44
> Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/121849
> Commit-Queue: Vyacheslav Egorov <vegorov@google.com >
> Reviewed-by: Martin Kustermann <kustermann@google.com >
TBR=vegorov@google.com ,kustermann@google.com
Change-Id: I4c2df7b675fa3cdab22a8708440dc45ff3ec3476
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: https://github.com/dart-lang/sdk/issues/38454
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/121885
Reviewed-by: Ben Konyi <bkonyi@google.com >
Commit-Queue: Ben Konyi <bkonyi@google.com >
2019-10-16 19:34:17 +00:00
Kallen Tu
7b135fc7a6
Differentiate between legacy and sound covariance.
...
Used to separate the behaviour without the variance experiment flag
turned off and with the flag turned on. Allows for more specific error
descriptions and allows the backend to avoid emitting variance
annotations for legacy covariance and only when the experiment is
enabled, otherwise there is no way of knowing whether the variance is
user specified.
Change-Id: Ia3070a1358e9b0fef10a3ce5057df881b9659832
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/121140
Commit-Queue: Kallen Tu <kallentu@google.com >
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com >
Reviewed-by: Leaf Petersen <leafp@google.com >
Reviewed-by: Alexander Markov <alexmarkov@google.com >
2019-10-16 18:18:06 +00:00
Alexander Aprelev
f219e5152d
[vm/service] Introduce IsolateGroup entity to vm service api.
...
This is to enable vm clients to ask how much memory is consumed by isolate group.
Issue https://github.com/dart-lang/sdk/issues/36097
Change-Id: I4f1c499bf02c20b80e9802d8ad60e7ea65cfb375
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/119724
Commit-Queue: Alexander Aprelev <aam@google.com >
Reviewed-by: Ryan Macnak <rmacnak@google.com >
Reviewed-by: Martin Kustermann <kustermann@google.com >
2019-10-16 18:05:06 +00:00
Liam Appelbe
2c94e56158
[vm] Implementation of the null check instruction in the flow graph.
...
tests/language_2/nnbd/syntax/non_null_assertion_test.dart now passes
Bug: https://github.com/dart-lang/sdk/issues/38840
Change-Id: Ie9676583c2cd7434dbb1c4c8b5ee4db817d01228
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/121820
Reviewed-by: Alexander Markov <alexmarkov@google.com >
Commit-Queue: Liam Appelbe <liama@google.com >
2019-10-16 17:25:16 +00:00
Aart Bik
c0a46e7b5a
[vm/compiler] improve redundant store elimination
...
Rationale:
Storing the same value into a field/array is now
detected and the redundant store is removed. Note
that this is closely related, but not exactly the
same as dead store elimination.
gallery savings: 13.7K bytes
https://github.com/dart-lang/sdk/issues/38454
Change-Id: I57100ef67a8e0132436933226ceecba95825458e
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/121823
Commit-Queue: Aart Bik <ajcbik@google.com >
Reviewed-by: Vyacheslav Egorov <vegorov@google.com >
2019-10-16 17:18:18 +00:00