Commit Graph

18413 Commits

Author SHA1 Message Date
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
Ryan Macnak 635c47b1c9 Reland "Update BoringSSL to 4dfd5af70191b068aebe567b8e29ce108cee85ce."
This reverts commit 7eeaeade6b.

Change-Id: I6e2d9f5b3f9a43b70db321d15c81e568857f303e
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/122488
Reviewed-by: Alexander Aprelev <aam@google.com>
Reviewed-by: Jonas Termansen <sortie@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2019-10-23 18:08:16 +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
Aart Bik 5478c381db [dart/fuzzer] Resort to constant collections inside subscripts
Rationale:
Using constant, small collections inside subscripts avoids
growing collections too much due to allocating new elements
for every literal. This also allows using non-flat data
structures again in our nightly testing.

https://github.com/dart-lang/sdk/issues/38710

Change-Id: If4bdc72f88f8c7d181709e829d35105a54cf8889
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/122423
Commit-Queue: Aart Bik <ajcbik@google.com>
Reviewed-by: Ben Konyi <bkonyi@google.com>
2019-10-22 20:22:26 +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
Clement Skau 2a12a13d96 [Test] Skips emit_aot_size_info_flag_test on crossword.
This should cycle vm-kernel-precomp-mac-release-simarm_x64 green again.

#gardening

Change-Id: I48b12d7cd015fff75756dc2e2a28ca4f2d98fcbf
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/122390
Commit-Queue: Clement Skau <cskau@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
2019-10-22 13:00:21 +00:00
Daco Harkes cf3cb29dec [vm/bytecode] Do not emit inferred type if unreachable - fix comment
Follow up of https://dart-review.googlesource.com/c/sdk/+/122147

Change-Id: I5849bcfe76375b6e3a55f3450ad69af4ebd46801
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/122340
Auto-Submit: Daco Harkes <dacoharkes@google.com>
Reviewed-by: Aart Bik <ajcbik@google.com>
Commit-Queue: Daco Harkes <dacoharkes@google.com>
2019-10-22 11:20:24 +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
Siva Annamalai e1c409792c Revert "Reland "Update BoringSSL to 4dfd5af70191b068aebe567b8e29ce108cee85ce.""
This reverts commit 7eeaeade6b.

Reason for revert: This change requires some changes to he Flutter license script before it can be rolled into Flutter, Since changes on the Dart side are mounting up I am reverting this change so the roll can move forward and then we will reland this change with the right fixes to the license checking script.

Original change's description:
> Reland "Update BoringSSL to 4dfd5af70191b068aebe567b8e29ce108cee85ce."
> 
> Change-Id: I7bdc0f0d55af2ecced789f1aa8f37b804641eaf4
> Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/121887
> Reviewed-by: Jonas Termansen <sortie@google.com>
> Commit-Queue: Ryan Macnak <rmacnak@google.com>

TBR=sortie@google.com,rmacnak@google.com

# Not skipping CQ checks because original CL landed > 1 day ago.

Change-Id: I548844e9d58559e6ed5796dff08f3ab0644c6dc2
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/122410
Reviewed-by: Siva Annamalai <asiva@google.com>
Commit-Queue: Siva Annamalai <asiva@google.com>
2019-10-22 05:54:53 +00:00
Martin Kustermann 6f44e99f6e [vm/aot] Add test which passes both AOT size information flags --print-instructions-sizes-to/--write-v8-snapshot-profile-to
It was reported that passing both flags would sometimes crash
gen_snapshot. This test can ensure it works and continues to work.

Change-Id: Ib58685e815a628efb786a001b91e48728d4b5a8d
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/122142
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
Commit-Queue: Martin Kustermann <kustermann@google.com>
2019-10-21 21:19:18 +00:00
Martin Kustermann 354921f955 Update runtime/docs/aot_binary_size_analysis.md with paragraph about size comparison tool
Closes #38950
https://github.com/dart-lang/sdk/pull/38950

GitOrigin-RevId: 31625fab4668271f17f4d8d980eac8973eaa69ed
Change-Id: I00cf15f5ddb019441acc8ddf84556d881832500e
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/122020
Commit-Queue: Vyacheslav Egorov <vegorov@google.com>
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
2019-10-21 21:06:39 +00:00
Aart Bik f77d7197b8 [vm/fuzzer] add --enable-asserts to AOT step
Rationale:
This exposes certain bugs in a cleaner way
than just crashing. See bug for an example.

https://github.com/dart-lang/sdk/issues/38965
https://github.com/dart-lang/sdk/issues/38979

Change-Id: Ib6ce52e31d5ca539fb4aedab989638949751627f
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/122168
Reviewed-by: Alexander Markov <alexmarkov@google.com>
Commit-Queue: Aart Bik <ajcbik@google.com>
2019-10-21 20:27:28 +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
Aart Bik bf4d4b2461 [dart/fuzzer] re-enable spread at all depths in fuzzer
Rationale:
front end team fixed bug in parsing these constructs

https://github.com/dart-lang/sdk/issues/38874

Change-Id: I2bc812c1ae3e4465cac93111836a21875a89b527
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/122420
Reviewed-by: Ben Konyi <bkonyi@google.com>
Commit-Queue: Aart Bik <ajcbik@google.com>
2019-10-21 18:55:24 +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
asiva d0139e8e38 [VM] More cleanup in the loader code
- Removed ResolveDependenciesAsFilePaths functionality as the loader
  does not track any dependencies (this is now provided by the kernel
  isolate)

- Removed ResolveAsFilePath functionality from the loader class

- Removed some left over code related to deferred loading

Change-Id: Ic1b1a79b07020bb7082e9efb7544b73931290faf
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/122220
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Siva Annamalai <asiva@google.com>
2019-10-21 17:44:18 +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
Alexander Markov 9220890dc7 [vm/bytecode] Do not emit inferred type if unreachable
Closes: https://github.com/dart-lang/sdk/issues/38965

Change-Id: Id74ed952f2f632fe8028a765d0cf717e04830954
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
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/122147
Commit-Queue: Daco Harkes <dacoharkes@google.com>
Reviewed-by: Daco Harkes <dacoharkes@google.com>
Reviewed-by: Alexander Markov <alexmarkov@google.com>
2019-10-18 18:29:02 +00:00
Sam Rawlins fd0617bd98 Improve listToString and setToString documentation. Fixes #26529
Bug: https://github.com/dart-lang/sdk/issues/26529
Change-Id: I4e2994dd39c676c2136c82d3e5dd9f45a8b154ce
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/82784
Commit-Queue: Samuel Rawlins <srawlins@google.com>
Reviewed-by: Lasse R.H. Nielsen <lrn@google.com>
2019-10-18 18:15:52 +00:00
Clement Skau a9fc9f7fd4 [SDK] Fixes run_appended_aotsnapshot_test on Windows.
Bug: https://github.com/dart-lang/sdk/issues/38974
Change-Id: I5fafb29252f20a536b5543d309ddeb4ccd3421ec
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/122145
Auto-Submit: Clement Skau <cskau@google.com>
Commit-Queue: Daco Harkes <dacoharkes@google.com>
Reviewed-by: Daco Harkes <dacoharkes@google.com>
2019-10-18 15:20:36 +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
Clement Skau 8d8faa7dea [SDK] Fixes loading appended snapshots when executed with PATH.
Loading of appended snapshots used to try read the executable itself
via arg[0] which holds the "path" to the executable.
However, when the executable is being invoked via PATH the "path"
can be just the name of the executable with no actual path.
This would cause the file reading to fail to find the file and
therefore fail to read.
This in turn caused standalone executables to fail to run when invoked
via PATH.

Bug: https://github.com/dart-lang/sdk/issues/38912
Change-Id: I08501661441db90ce6cff96a9337a5770ec3524d
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/121853
Commit-Queue: Clement Skau <cskau@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
2019-10-18 10:30: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
Daco Harkes d2b39d1a07 [cfe/ffi] asFunction/fromFunction variance in CFE + regression test
Issue: https://github.com/dart-lang/sdk/issues/37385

Change-Id: I0a0704f3513bf8de802e7481d813f72678837e0b
Cq-Include-Trybots: luci.dart.try:vm-ffi-android-debug-arm-try,vm-ffi-android-debug-arm64-try,dart-sdk-linux-try,analyzer-win-release-try
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/107511
Commit-Queue: Daco Harkes <dacoharkes@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
2019-10-17 17:44:06 +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
Ryan Macnak 7eeaeade6b Reland "Update BoringSSL to 4dfd5af70191b068aebe567b8e29ce108cee85ce."
Change-Id: I7bdc0f0d55af2ecced789f1aa8f37b804641eaf4
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/121887
Reviewed-by: Jonas Termansen <sortie@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2019-10-17 15:39:40 +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
Samir Jindel 548f7f3d6e [vm/aot] Deprecate blob snapshots.
Change-Id: I850d28bf6dd405b41646482e810d4d0b4498c66c
Cq-Include-Trybots:luci.dart.try:vm-kernel-precomp-bare-linux-release-simarm64-try,vm-kernel-precomp-linux-debug-x64-try,vm-kernel-precomp-linux-release-simarm-try
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/121704
Commit-Queue: Samir Jindel <sjindel@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
2019-10-17 13:13:39 +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
Ben Konyi 0b045aea2b [ VM ] Removed tests/standalone along with any references in build bot / test runner configurations
Deleted irrelevant tests and migrated valid tests to Dart 2

Change-Id: If37611e051b7e2f128c53267f606d480d7fe23a5
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/121902
Commit-Queue: Ben Konyi <bkonyi@google.com>
Reviewed-by: Siva Annamalai <asiva@google.com>
Reviewed-by: Ryan Macnak <rmacnak@google.com>
2019-10-17 00:41:16 +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