Ryan Macnak
54b197ccc2
[vm] Prevent GC when there are outstanding pointers from Dart_TypedDataAcquireData.
...
Bug: https://github.com/dart-lang/sdk/issues/37256
Change-Id: I1dcd2e32d8308c5a7169731169a048b8f1bfcc79
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/106023
Commit-Queue: Ryan Macnak <rmacnak@google.com >
Reviewed-by: Alexander Markov <alexmarkov@google.com >
2019-06-19 21:31:31 +00:00
Aart Bik
a421022b77
[dart/vm] fix crash in DBC register allocation
...
Rationale:
Code had no guard on running out of registers
https://github.com/dart-lang/sdk/issues/36977
Change-Id: Ifec1b7ef626e6a8720c437f0f25d119956dfb63a
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/106429
Commit-Queue: Aart Bik <ajcbik@google.com >
Reviewed-by: Martin Kustermann <kustermann@google.com >
Reviewed-by: Vyacheslav Egorov <vegorov@google.com >
2019-06-19 17:24:16 +00:00
Régis Crelier
c6c0e5bf40
[vm/debugger] Make use of variable descriptors in bytecode debugger.
...
Change-Id: Ibf4c8f638065c8173c5c21c8fa9c40ee5cecb587
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/106427
Commit-Queue: Régis Crelier <regis@google.com >
Reviewed-by: Alexander Markov <alexmarkov@google.com >
2019-06-18 19:47:27 +00:00
Matthew Dempsky
303dfdf9b5
[vm] Use std::unique_ptr for ThreadPool::Task
...
Updates #37244 .
Change-Id: I32a5180a17fe43be5e18367d784cf756dffc6aeb
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/106009
Commit-Queue: Matthew Dempsky <mdempsky@google.com >
Reviewed-by: Régis Crelier <regis@google.com >
2019-06-18 17:51:10 +00:00
Teagan Strickland
99e785024c
[vm/compiler] Update outdated comment.
...
Also outline a possible optimization here, with an corresponding
issue filed to later do that work.
Change-Id: I353cab8842cbbc0e2e15e127e45e736884d3c51e
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/106343
Commit-Queue: Teagan Strickland <sstrickl@google.com >
Reviewed-by: Martin Kustermann <kustermann@google.com >
2019-06-18 10:30:18 +00:00
Ryan Macnak
8be1d13af7
[vm, compiler] Implicit accessor intrinsics don't need a regular function body.
...
Change-Id: I24ed366bb065c602f06a0ecf6853ffbba43f44a1
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/103942
Reviewed-by: Alexander Markov <alexmarkov@google.com >
Reviewed-by: Aart Bik <ajcbik@google.com >
Commit-Queue: Ryan Macnak <rmacnak@google.com >
2019-06-18 00:13:18 +00:00
Aart Bik
c549f96ef1
[dart/vm] simplified inlining heuristics
...
Rationale:
Less special casing, more informed decisions
https://github.com/dart-lang/sdk/issues/37126
Change-Id: I3415f52cf38ed6110ebe16c44a719f6081f24dbf
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/106182
Commit-Queue: Aart Bik <ajcbik@google.com >
Reviewed-by: Martin Kustermann <kustermann@google.com >
2019-06-17 17:38:41 +00:00
Samir Jindel
d0447ee0da
[vm/ffi] Fix ADR usage in FfiCallInstr::EmitNativeCode.
...
Props to Daco for identifying the stackmap issue!
Change-Id: I9a54b9db864c86e069e2fcf84b6ba71719d76a09
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/106086
Reviewed-by: Daco Harkes <dacoharkes@google.com >
Commit-Queue: Samir Jindel <sjindel@google.com >
2019-06-14 16:54:23 +00:00
Samir Jindel
0460503057
[vm/ffi] Fix safepoint implementation in ARM64 assembler.
...
Fixes #37180
Change-Id: I4be04fbd98be2c724218da89fbd2bea78cda0c26
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/106081
Auto-Submit: Samir Jindel <sjindel@google.com >
Commit-Queue: Daco Harkes <dacoharkes@google.com >
Reviewed-by: Daco Harkes <dacoharkes@google.com >
2019-06-14 13:25:27 +00:00
Ryan Macnak
112dbabc10
[vm] Update Megamorphic::filled_entry_count_ under the megamorphic lock.
...
Otherwise the background compiler may see 0 when the mutator grows the megamorphic cache.
Bug: https://github.com/dart-lang/sdk/issues/37257
Change-Id: I64a31937391ad6c0f086f8f175501ca4ef06c305
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/105969
Commit-Queue: Ryan Macnak <rmacnak@google.com >
Reviewed-by: Alexander Markov <alexmarkov@google.com >
2019-06-13 21:13:15 +00:00
Liam Appelbe
0f91731f98
Add Thread::optimize_(stub|entry) to runtime_api.h
...
Bug: https://github.com/dart-lang/sdk/issues/36839
Change-Id: Iab35c6bb322492872577545aaacc5147a76f2708
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/105920
Auto-Submit: Liam Appelbe <liama@google.com >
Commit-Queue: Ryan Macnak <rmacnak@google.com >
Reviewed-by: Ryan Macnak <rmacnak@google.com >
2019-06-13 19:57:35 +00:00
Daco Harkes
04c1a2886f
[vm/ffi] SimDBC64 align stack frame
...
And regression test for dartbug.com/37069
Fixes: https://github.com/dart-lang/sdk/issues/37176
Follow up of: https://dart-review.googlesource.com/c/sdk/+/103814
Bug: https://github.com/dart-lang/sdk/issues/37069
Change-Id: I066561b487c691952496e2ca6878ac82cee0e02e
Cq-Include-Trybots: luci.dart.try:vm-ffi-android-debug-arm-try, app-kernel-linux-debug-x64-try, vm-kernel-linux-debug-simdbc64-try,vm-kernel-mac-debug-simdbc64-try,vm-kernel-reload-mac-debug-simdbc64-try,vm-kernel-linux-debug-ia32-try,vm-dartkb-linux-debug-simarm64-try,vm-kernel-win-debug-x64-try
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/105941
Commit-Queue: Daco Harkes <dacoharkes@google.com >
Reviewed-by: Samir Jindel <sjindel@google.com >
2019-06-13 16:26:40 +00:00
Samir Jindel
68b2d53da5
Revert "[vm/ffi] SimDBC64 align stack frame"
...
This reverts commit f1038ee771 .
Reason for revert: breaks function_gc_test on ARM64
Original change's description:
> [vm/ffi] SimDBC64 align stack frame
>
> And regression test for dartbug.com/37069
>
> Fixes: https://github.com/dart-lang/sdk/issues/37176
> Follow up of: https://dart-review.googlesource.com/c/sdk/+/103814
> Bug: https://github.com/dart-lang/sdk/issues/37069
> Change-Id: I2c791271f936580d66a48485a60ab6cddb1ba4f8
> Cq-Include-Trybots: luci.dart.try:vm-ffi-android-debug-arm-try, app-kernel-linux-debug-x64-try, vm-kernel-linux-debug-simdbc64-try,vm-kernel-mac-debug-simdbc64-try,vm-kernel-reload-mac-debug-simdbc64-try,vm-kernel-linux-debug-ia32-try,vm-dartkb-linux-debug-simarm64-try,vm-kernel-win-debug-x64-try
> Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/104824
> Commit-Queue: Daco Harkes <dacoharkes@google.com >
> Reviewed-by: Samir Jindel <sjindel@google.com >
TBR=sjindel@google.com ,dacoharkes@google.com
Change-Id: Ibefa2e854f4a58b41384aca73a3bbbe86d75bf80
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: https://github.com/dart-lang/sdk/issues/37069
Cq-Include-Trybots: luci.dart.try:vm-ffi-android-debug-arm-try, app-kernel-linux-debug-x64-try, vm-kernel-linux-debug-simdbc64-try, vm-kernel-mac-debug-simdbc64-try, vm-kernel-reload-mac-debug-simdbc64-try, vm-kernel-linux-debug-ia32-try, vm-dartkb-linux-debug-simarm64-try, vm-kernel-win-debug-x64-try
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/105840
Reviewed-by: Samir Jindel <sjindel@google.com >
Commit-Queue: Samir Jindel <sjindel@google.com >
2019-06-12 22:31:11 +00:00
Ryan Macnak
1e24fe7d69
[vm, compiler] Specialize unoptimized monomorphic and megamorphic calls.
...
dart-bytecode, arm64: +4.742% geomean
dart-bytecode-jit-unopt, arm64: +12.73% geomean
dart2js-compile, x64: +3.635% geomean
In the polymorphic and unlinked cases, call to a stub the does a linear scan against an ICData.
In the monomorphic case, call to a prologue of the expected target function that checks the expected receiver class. There is additional indirection in the JIT version compared to the AOT version to also tick a usage counter so the inliner can make good decisions.
In the megamorphic case, call to a stub that does a hash table lookup against a MegamorphicCache.
Megamorphic call sites face a loss of precision in usage counts. The call site count is not recorded and the usage counter of the target function is used as an approximation.
Monomorphic and megamorphic calls sites are reset to the polymorphic/unlinked state on hot reload.
Monomorphic and megamorphic calls sites do not check the stepping state, so they are reset to the polymorphic/unlinked state when stepping begins and disabled.
Back-edges now increment the usage counter in addition to checking it. This ensures function with loops containing monomorphic calls will eventually cross the optimization threshold.
Fixed backwards use of kMonomorphicEntryOffset and kPolymorphicEntryOffset.
Fixed C stack overflow when bouncing between the KBC interpreter and a simulator.
Bug: https://github.com/dart-lang/sdk/issues/26780
Bug: https://github.com/dart-lang/sdk/issues/36409
Bug: https://github.com/dart-lang/sdk/issues/36731
Change-Id: I78a49cccd962703a459288e71ce246ed845df474
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/102820
Commit-Queue: Ryan Macnak <rmacnak@google.com >
Reviewed-by: Alexander Markov <alexmarkov@google.com >
2019-06-12 21:56:53 +00:00
Ryan Macnak
f005bd5a3e
[vm] Harden access to unchecked natives.
...
Bug: https://github.com/dart-lang/sdk/issues/37234
Change-Id: I567b3fa177e89db50345e174a07c98b10c53f102
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/105721
Commit-Queue: Ryan Macnak <rmacnak@google.com >
Reviewed-by: Régis Crelier <regis@google.com >
Reviewed-by: Siva Annamalai <asiva@google.com >
2019-06-12 21:32:33 +00:00
Ryan Macnak
31d5ba8790
Reapply "[vm, interpreter] Bytecode support for dynamic invocation forwarders."
...
Add missing entries to RAW_CLASSES_AND_FIELDS.
Change-Id: Ib90f4878d3eff81a6a059f7e38f1d6593cd85cfc
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/105820
Reviewed-by: Alexander Markov <alexmarkov@google.com >
Commit-Queue: Ryan Macnak <rmacnak@google.com >
2019-06-12 20:51:44 +00:00
Aart Bik
fa6fce61fa
[dart/vm] Improved inlining methods and heuristics
...
Rationale:
Previous method cached graph information (instruction and call site
counts) on a per-function level, not accounting for potential
specializations. The improved method runs an extra constant folding
pass, and only caches per-function information for non-specialized
cases. As a result, we inling much better, see for example, the
added test as illustration.
Since we no longer cache for constants, compile-time may be increased
a bit due to the extra scan. In the long run we should consider
for common constant "situations" as the call site.
https://github.com/dart-lang/sdk/issues/36880
Change-Id: I19f007c7f1860ad0ea88fafb38695dc154189ad5
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/105460
Commit-Queue: Aart Bik <ajcbik@google.com >
Reviewed-by: Martin Kustermann <kustermann@google.com >
Reviewed-by: Alexander Markov <alexmarkov@google.com >
2019-06-12 19:39:10 +00:00
Ryan Macnak
433cb12a87
Revert "[vm, interpreter] Bytecode support for dynamic invocation forwarders."
...
This reverts commit 1d94323b5b .
Reason for revert: v8_snapshot_profile_writer_test
Original change's description:
> [vm, interpreter] Bytecode support for dynamic invocation forwarders.
>
> Change-Id: I8fb26ca5b7d395c9275b7e1860b47b5c176c00b3
> Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/104941
> Commit-Queue: Ryan Macnak <rmacnak@google.com >
> Reviewed-by: Alexander Markov <alexmarkov@google.com >
> Reviewed-by: Régis Crelier <regis@google.com >
TBR=rmacnak@google.com ,alexmarkov@google.com ,regis@google.com
Change-Id: I7f3660e2148683567397a53f0b88ffab76671d94
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/105724
Reviewed-by: Ryan Macnak <rmacnak@google.com >
Commit-Queue: Ryan Macnak <rmacnak@google.com >
2019-06-12 19:01:55 +00:00
asiva
972ad1c073
[VM/runtime] Fix performance regression introduced in https://dart-review.googlesource.com/c/sdk/+/104286
...
The change above was returning an incorrect offset for
dart::ClassHeapStats::state_ field in ClassTable::class_heap_stats_table_
This resulted in incorrect values being returned from TraceAllocationFor
causing all allocations to go into the slow path. This also caused the
errors in the profiler tests.
Change-Id: I98cceed7134f1596c0532a813fe15b2e3730dcb1
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/105701
Reviewed-by: Liam Appelbe <liama@google.com >
Reviewed-by: Ryan Macnak <rmacnak@google.com >
Commit-Queue: Siva Annamalai <asiva@google.com >
2019-06-12 18:13:04 +00:00
Ryan Macnak
1d94323b5b
[vm, interpreter] Bytecode support for dynamic invocation forwarders.
...
Change-Id: I8fb26ca5b7d395c9275b7e1860b47b5c176c00b3
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/104941
Commit-Queue: Ryan Macnak <rmacnak@google.com >
Reviewed-by: Alexander Markov <alexmarkov@google.com >
Reviewed-by: Régis Crelier <regis@google.com >
2019-06-12 18:09:54 +00:00
Daco Harkes
f1038ee771
[vm/ffi] SimDBC64 align stack frame
...
And regression test for dartbug.com/37069
Fixes: https://github.com/dart-lang/sdk/issues/37176
Follow up of: https://dart-review.googlesource.com/c/sdk/+/103814
Bug: https://github.com/dart-lang/sdk/issues/37069
Change-Id: I2c791271f936580d66a48485a60ab6cddb1ba4f8
Cq-Include-Trybots: luci.dart.try:vm-ffi-android-debug-arm-try, app-kernel-linux-debug-x64-try, vm-kernel-linux-debug-simdbc64-try,vm-kernel-mac-debug-simdbc64-try,vm-kernel-reload-mac-debug-simdbc64-try,vm-kernel-linux-debug-ia32-try,vm-dartkb-linux-debug-simarm64-try,vm-kernel-win-debug-x64-try
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/104824
Commit-Queue: Daco Harkes <dacoharkes@google.com >
Reviewed-by: Samir Jindel <sjindel@google.com >
2019-06-12 16:25:34 +00:00
Ryan Macnak
2be92b08c2
[vm] Remove more of the Dart 1 compiler.
...
Change-Id: Ib00e040f44275b9437e7fc622bf285607f4e4124
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/105681
Reviewed-by: Alexander Markov <alexmarkov@google.com >
Commit-Queue: Ryan Macnak <rmacnak@google.com >
2019-06-12 01:00:29 +00:00
Liam Appelbe
a1401e3015
[vm] Roll back part of 2nd simarm_x64 CL that slowed benchmarks
...
Rolls back part of https://dart-review.googlesource.com/c/sdk/+/104286
which caused many benchmark runtime regressions such as:
https://golem.corp.goog/Benchmark?team=dart-vm&benchmark=DeltaBlue#targets%3Ddart%3BmachineTypes%3Dlinux-x64%3Bcpus%3DIntel%20Core%20i5
Culprit was ClassTable::StateOffsetFor(intptr_t cid), so this CL
rolls back just that function to its old state.
Bug: https://github.com/dart-lang/sdk/issues/36839
Bug: https://github.com/dart-lang/sdk/issues/37221
Change-Id: I6c369537d0fdaa8609dcd1f57efbaf518b8bf66c
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/105550
Commit-Queue: Liam Appelbe <liama@google.com >
Reviewed-by: Liam Appelbe <liama@google.com >
2019-06-11 09:35:24 +00:00
Liam Appelbe
e4196ce8c6
[vm] Namespace constants like offsets and sizeofs to use runtime_api.h
...
Second sub-CL of https://dart-review.googlesource.com/c/sdk/+/100644
The first was here https://dart-review.googlesource.com/c/sdk/+/103487
Now that offsets_extractor is checked in, and we have a big header full
of hard coded constants, the next step is to make sure everything is
using those constants. This is essentially everything in the original
CL, except the new simarm_x64 architecture.
Bug: https://github.com/dart-lang/sdk/issues/36839
Change-Id: I236e4f30aa1df6d92209891c983b792d1835b608
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/104286
Commit-Queue: Liam Appelbe <liama@google.com >
Reviewed-by: Ryan Macnak <rmacnak@google.com >
2019-06-10 02:55:25 +00:00
Alexander Markov
7f146e431e
[vm] Cleanup unused FieldHasFunctionLiteralInitializer
...
Change-Id: Iaf060ca5cffb767aacc4fc2eb8c79fbfb2aa0798
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/105462
Auto-Submit: Alexander Markov <alexmarkov@google.com >
Reviewed-by: Siva Annamalai <asiva@google.com >
Commit-Queue: Alexander Markov <alexmarkov@google.com >
2019-06-08 01:21:59 +00:00
Daco Harkes
9f2f5adb64
Reland [vm/ffi] Regression test for dartbug.com/36993
...
Fixes: https://github.com/dart-lang/sdk/issues/37175
Know issue: https://github.com/dart-lang/sdk/issues/37180
Follow up of: https://dart-review.googlesource.com/c/sdk/+/103136
Bug: https://github.com/dart-lang/sdk/issues/36993
Change-Id: I13fc69fd84362f207e9e66c4d1ef6c2ef2aba368
Cq-Include-Trybots: luci.dart.try:vm-ffi-android-debug-arm-try, app-kernel-linux-debug-x64-try, vm-kernel-linux-debug-simdbc64-try,vm-kernel-mac-debug-simdbc64-try,vm-kernel-reload-mac-debug-simdbc64-try,vm-kernel-linux-debug-ia32-try,vm-dartkb-linux-debug-simarm64-try,vm-kernel-win-debug-x64-try
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/105303
Auto-Submit: Daco Harkes <dacoharkes@google.com >
Reviewed-by: Samir Jindel <sjindel@google.com >
Commit-Queue: Samir Jindel <sjindel@google.com >
2019-06-07 13:52:09 +00:00
Daco Harkes
e9b25d72a1
[vm/ffi] Fix double shadow space on safepoint slow path
...
Fixes: https://github.com/dart-lang/sdk/issues/37175
Change-Id: I096a9c43ed0d500cc0d4f70a72ae53b156e1e1e2
Cq-Include-Trybots: luci.dart.try:vm-ffi-android-debug-arm-try, app-kernel-linux-debug-x64-try, vm-kernel-linux-debug-simdbc64-try,vm-kernel-mac-debug-simdbc64-try,vm-kernel-reload-mac-debug-simdbc64-try,vm-kernel-linux-debug-ia32-try,vm-dartkb-linux-debug-simarm64-try,vm-kernel-win-debug-x64-try
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/105300
Commit-Queue: Daco Harkes <dacoharkes@google.com >
Auto-Submit: Daco Harkes <dacoharkes@google.com >
Reviewed-by: Samir Jindel <sjindel@google.com >
2019-06-06 18:12:02 +00:00
Samir Jindel
6b7013224c
Revert "[vm/ffi] Regression test for dartbug.com/36993"
...
This reverts commit e1a7ef52af .
Reason for revert:
Caused crash on cross-vm-linux-release-arm64: https://ci.chromium.org/p/dart/builders/ci.sandbox/cross-vm-linux-release-arm64/2036
Original change's description:
> [vm/ffi] Regression test for dartbug.com/36993
>
> Follow up of: https://dart-review.googlesource.com/c/sdk/+/103136
> Bug: https://github.com/dart-lang/sdk/issues/36993
> Change-Id: Ib5e8308b91b9b5ce5b95362dd79d12e79499a75c
> Cq-Include-Trybots: luci.dart.try:vm-ffi-android-debug-arm-try, app-kernel-linux-debug-x64-try, vm-kernel-linux-debug-simdbc64-try,vm-kernel-mac-debug-simdbc64-try,vm-kernel-reload-mac-debug-simdbc64-try,vm-kernel-linux-debug-ia32-try,vm-dartkb-linux-debug-simarm64-try,vm-kernel-win-debug-x64-try
> Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/104820
> Commit-Queue: Daco Harkes <dacoharkes@google.com >
> Reviewed-by: Samir Jindel <sjindel@google.com >
> Auto-Submit: Daco Harkes <dacoharkes@google.com >
TBR=sjindel@google.com ,dacoharkes@google.com
Change-Id: I51cb94dc4a6046bedb6be0580d0092010992c684
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: https://github.com/dart-lang/sdk/issues/36993
Cq-Include-Trybots: luci.dart.try:vm-ffi-android-debug-arm-try, app-kernel-linux-debug-x64-try, vm-kernel-linux-debug-simdbc64-try, vm-kernel-mac-debug-simdbc64-try, vm-kernel-reload-mac-debug-simdbc64-try, vm-kernel-linux-debug-ia32-try, vm-dartkb-linux-debug-simarm64-try, vm-kernel-win-debug-x64-try
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/105301
Reviewed-by: Samir Jindel <sjindel@google.com >
Commit-Queue: Samir Jindel <sjindel@google.com >
2019-06-06 17:12:59 +00:00
Daco Harkes
e1a7ef52af
[vm/ffi] Regression test for dartbug.com/36993
...
Follow up of: https://dart-review.googlesource.com/c/sdk/+/103136
Bug: https://github.com/dart-lang/sdk/issues/36993
Change-Id: Ib5e8308b91b9b5ce5b95362dd79d12e79499a75c
Cq-Include-Trybots: luci.dart.try:vm-ffi-android-debug-arm-try, app-kernel-linux-debug-x64-try, vm-kernel-linux-debug-simdbc64-try,vm-kernel-mac-debug-simdbc64-try,vm-kernel-reload-mac-debug-simdbc64-try,vm-kernel-linux-debug-ia32-try,vm-dartkb-linux-debug-simarm64-try,vm-kernel-win-debug-x64-try
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/104820
Commit-Queue: Daco Harkes <dacoharkes@google.com >
Reviewed-by: Samir Jindel <sjindel@google.com >
Auto-Submit: Daco Harkes <dacoharkes@google.com >
2019-06-06 15:12:02 +00:00
Teagan Strickland
2e7501b1f8
[vm/compiler] Refine type information when replacing definitions.
...
This way, the new type information can be used immediately by
this and following passes instead of only passes after the next
type propagation phase.
Change-Id: Id27c3789c7c32f5775da5ef933bc56cb58c2a203
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/101826
Commit-Queue: Teagan Strickland <sstrickl@google.com >
Reviewed-by: Martin Kustermann <kustermann@google.com >
2019-06-06 14:22:14 +00:00
Teagan Strickland
0bcb607868
[vm/compiler] Reland "Fix receiver redefinition type for poly inlining."
...
In cases where the same target function is used for multiple
CID ranges, we only perform the inlining once. However, if the
CID range used for the initial inlining is a single CID, we will
set the type of the redefinition to that CID.
Detect this case and clear the concrete type associated with
the redefinition if it was given one.
Change-Id: I9f9bdd7c21e0dc1ac537f8facece0010630bd9aa
Cq-Include-Trybots: luci.dart.try:vm-kernel-win-debug-x64-try,vm-kernel-win-release-ia32-try,vm-kernel-win-product-x64-try
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/105221
Commit-Queue: Teagan Strickland <sstrickl@google.com >
Reviewed-by: Martin Kustermann <kustermann@google.com >
2019-06-06 13:22:09 +00:00
Alexander Markov
50efa48bc1
[vm/bytecode] Cleanup uses of KernelReaderHelper from bytecode reader
...
Also, cleanup/streamline uses of BytecodeMetadataHelper where
kernel metadata is no longer involved.
Change-Id: I067c2556bbf0614a365131299140589f9e0007f4
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/105023
Reviewed-by: Ryan Macnak <rmacnak@google.com >
Reviewed-by: Régis Crelier <regis@google.com >
Commit-Queue: Alexander Markov <alexmarkov@google.com >
2019-06-05 19:46:11 +00:00
Ben Konyi
664a3f04b3
Revert "[vm/compiler] Fix receiver redefinition type for poly inlining."
...
This reverts commit cf2e2e88e1 .
Change-Id: I9f1e787b95dea4b678bae68678304cc8998f6698
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/104944
Reviewed-by: Ben Konyi <bkonyi@google.com >
Commit-Queue: Ben Konyi <bkonyi@google.com >
2019-06-04 23:19:20 +00:00
Teagan Strickland
cf2e2e88e1
[vm/compiler] Fix receiver redefinition type for poly inlining.
...
In cases where the same target function is used for multiple
CID ranges, we only perform the inlining once. However, if the
CID range used for the initial inlining is a single CID, we will
set the type of the redefinition to that CID.
Detect this case and clear the concrete type associated with
the redefinition if it was given one.
Change-Id: I3c27c46c71e10e71624ce3b969cb741eb9b2915f
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/104781
Commit-Queue: Teagan Strickland <sstrickl@google.com >
Reviewed-by: Martin Kustermann <kustermann@google.com >
2019-06-04 16:51:36 +00:00
Samir Jindel
331b3a7658
[vm/ffi] Fix flaky crash of ffi/function_callbacks_test
...
Change-Id: If02c8dc5b6a21b05ea4d730687658cdb00128bbc
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/104822
Auto-Submit: Samir Jindel <sjindel@google.com >
Commit-Queue: Daco Harkes <dacoharkes@google.com >
Reviewed-by: Daco Harkes <dacoharkes@google.com >
2019-06-04 14:31:19 +00:00
Liam Appelbe
5b72293f49
Reland "[vm] Create offsets_extractor tool."
...
This reverts commit 224f82c21c .
Reason for revert: Just need to split DBC section into 32 and 64 bit
Original change's description:
> Revert "[vm] Create offsets_extractor tool."
>
> This reverts commit 3015d79371 .
>
> Reason for revert: Fails the Flutter build
> /b/s/w/ir/cache/builder/mac_sdk -mmacosx-version-min=10.12 -m32 -fno-strict-aliasing -fstack-protector-all -fcolor-diagnostics -Wall -Wextra -Wendif-labels -Werror -Wno-missing-field-initializers -Wno-unused-parameter -Wunguarded-availability -fvisibility=hidden -stdlib=libc++ -Wheader-hygiene -Wstring-conversion -Wthread-safety -O2 -fno-ident -fdata-sections -ffunction-sections -g2 -Werror -Wall -Wextra -Wno-unused-parameter -Wno-unused-private-field -Wnon-virtual-dtor -Wvla -Wno-conversion-null -Woverloaded-virtual -Wno-comments -g3 -ggdb3 -fno-rtti -fno-exceptions -Wimplicit-fallthrough -O3 -fvisibility-inlines-hidden -std=c++14 -fno-rtti -fno-exceptions -c ../../third_party/dart/runtime/vm/dart.cc -o clang_x86/obj/third_party/dart/runtime/vm/libdart_vm_nosnapshot_with_precompiler.dart.o
> In file included from ../../third_party/dart/runtime/vm/dart.cc:9:
> ../../third_party/dart/runtime/vm/compiler/runtime_offsets_extracted.h:958:50: error: implicit conversion from 'long long' to 'const dart::word' (aka 'const long') changes value from 576460752303423487 to -1 [-Werror,-Wconstant-conversion]
> static constexpr dart::word Array_kMaxElements = 576460752303423487;
> ~~~~~~~~~~~~~~~~~~ ^~~~~~~~~~~~~~~~~~
> ../../third_party/dart/runtime/vm/compiler/runtime_offsets_extracted.h:965:51: error: implicit conversion from 'long long' to 'const dart::word' (aka 'const long') changes value from 2305843009213693951 to -1 [-Werror,-Wconstant-conversion]
> static constexpr dart::word String_kMaxElements = 2305843009213693951;
> ~~~~~~~~~~~~~~~~~~~ ^~~~~~~~~~~~~~~~~~~
> 2 errors generated.
>
> Change-Id: Iaf509c6ee7a2ce75664935519ac02a933a9eb2bf
> Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/104402
> Reviewed-by: Siva Annamalai <asiva@google.com >
> Commit-Queue: Siva Annamalai <asiva@google.com >
> Auto-Submit: Siva Annamalai <asiva@google.com >
TBR=asiva@google.com
Change-Id: Ibf749ceee274b03cdffa6d7ed46fcbe75d1a1e94
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/104620
Reviewed-by: Liam Appelbe <liama@google.com >
Reviewed-by: Siva Annamalai <asiva@google.com >
Commit-Queue: Liam Appelbe <liama@google.com >
2019-06-03 22:14:16 +00:00
Samir Jindel
8cbb11cc55
[vm/ffi] FFI callbacks on ARM32.
...
Please see go/dart-ffi-callbacks for design context and motivation.
Change-Id: Ie5edcb8837157c679954a670fb19d545e22fec69
Cq-Include-Trybots: luci.dart.try:vm-kernel-linux-debug-simdbc64-try, vm-kernel-linux-release-simdbc64-try, vm-kernel-mac-debug-simdbc64-try, vm-kernel-mac-release-simdbc64-try, vm-kernel-reload-mac-debug-simdbc64-try, vm-kernel-reload-mac-release-simdbc64-try, vm-kernel-linux-debug-ia32-try, vm-dartkb-linux-debug-simarm64-try, vm-kernel-win-debug-ia32-try, vm-ffi-android-debug-arm-try
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/101828
Commit-Queue: Samir Jindel <sjindel@google.com >
Reviewed-by: Aart Bik <ajcbik@google.com >
Reviewed-by: Daco Harkes <dacoharkes@google.com >
2019-06-03 14:36:04 +00:00
asiva
224f82c21c
Revert "[vm] Create offsets_extractor tool."
...
This reverts commit 3015d79371 .
Reason for revert: Fails the Flutter build
/b/s/w/ir/cache/builder/mac_sdk -mmacosx-version-min=10.12 -m32 -fno-strict-aliasing -fstack-protector-all -fcolor-diagnostics -Wall -Wextra -Wendif-labels -Werror -Wno-missing-field-initializers -Wno-unused-parameter -Wunguarded-availability -fvisibility=hidden -stdlib=libc++ -Wheader-hygiene -Wstring-conversion -Wthread-safety -O2 -fno-ident -fdata-sections -ffunction-sections -g2 -Werror -Wall -Wextra -Wno-unused-parameter -Wno-unused-private-field -Wnon-virtual-dtor -Wvla -Wno-conversion-null -Woverloaded-virtual -Wno-comments -g3 -ggdb3 -fno-rtti -fno-exceptions -Wimplicit-fallthrough -O3 -fvisibility-inlines-hidden -std=c++14 -fno-rtti -fno-exceptions -c ../../third_party/dart/runtime/vm/dart.cc -o clang_x86/obj/third_party/dart/runtime/vm/libdart_vm_nosnapshot_with_precompiler.dart.o
In file included from ../../third_party/dart/runtime/vm/dart.cc:9:
../../third_party/dart/runtime/vm/compiler/runtime_offsets_extracted.h:958:50: error: implicit conversion from 'long long' to 'const dart::word' (aka 'const long') changes value from 576460752303423487 to -1 [-Werror,-Wconstant-conversion]
static constexpr dart::word Array_kMaxElements = 576460752303423487;
~~~~~~~~~~~~~~~~~~ ^~~~~~~~~~~~~~~~~~
../../third_party/dart/runtime/vm/compiler/runtime_offsets_extracted.h:965:51: error: implicit conversion from 'long long' to 'const dart::word' (aka 'const long') changes value from 2305843009213693951 to -1 [-Werror,-Wconstant-conversion]
static constexpr dart::word String_kMaxElements = 2305843009213693951;
~~~~~~~~~~~~~~~~~~~ ^~~~~~~~~~~~~~~~~~~
2 errors generated.
Change-Id: Iaf509c6ee7a2ce75664935519ac02a933a9eb2bf
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/104402
Reviewed-by: Siva Annamalai <asiva@google.com >
Commit-Queue: Siva Annamalai <asiva@google.com >
Auto-Submit: Siva Annamalai <asiva@google.com >
2019-06-01 00:51:58 +00:00
Alexander Markov
0e6b74543c
Revert "[vm/kernel] Use GC-tracked ExternalTypedData/TypedDataView for kernel buffers"
...
This reverts commit ab6aeaa106 .
Revert "[vm/compiler] Speed up the compiler part which deals with kernel reading up in DEBUG mode"
This reverts commit b316210d94 .
Reason for revert: regression of snapshot sizes (DNO-599).
Original change's description:
> [vm/kernel] Use GC-tracked ExternalTypedData/TypedDataView for kernel buffers
>
> Until now we often leaked kernel buffers (e.g. hot reload buffers) because various
> objects were referencing ExternalTypedData objects pointing into the middle of
> c-allocated memory. This made it impossible for the GC to determine when the last
> reference is gone.
>
> This CL ensures that the actual buffers are *always* made available via
> ExternalTypedData and any inner pointers into it are created via TypedDataViews.
>
> The embedder guarantees to the free kernel buffers it has provided to:
> - Dart_CreateIsolateFromKernel
> - Dart_LoadScriptFromKernel
> - Dart_LoadLibraryFromKernel
> - Dart_SetDartLibrarySourcesKernel
> on isolate shutdown.
>
> All other kernel buffers will get a finalizer attached, which ensures the
> kernel buffers get freed by the GC once they are no longer referenced:
> - Kernel blobs for expression evaluation
> - Kernel blobs for Hot-Reload
> - Kernel blobs for cc tests
>
> Fixes https://github.com/dart-lang/sdk/issues/33973
> Fixes https://github.com/dart-lang/sdk/issues/36857
> Issue https://github.com/dart-lang/sdk/issues/37030
>
> Change-Id: I1cc410c94c0f4b229413e793728a261afcb10aaf
> Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/103130
> Reviewed-by: Ryan Macnak <rmacnak@google.com >
> Commit-Queue: Martin Kustermann <kustermann@google.com >
TBR=kustermann@google.com ,rmacnak@google.com
# Not skipping CQ checks because original CL landed > 1 day ago.
Change-Id: I49715d2400f4a5c8806b7d6a2912b7258f671a0a
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/104343
Reviewed-by: Alexander Markov <alexmarkov@google.com >
Reviewed-by: Siva Annamalai <asiva@google.com >
Auto-Submit: Alexander Markov <alexmarkov@google.com >
2019-05-31 22:15:51 +00:00
Régis Crelier
cddf2bbdfe
[vm/debugger] Support debugging of interpreted frames.
...
Change-Id: Iaf59e6ed887ed973fcfc7f1c414ad52ef98f01d7
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/100270
Commit-Queue: Régis Crelier <regis@google.com >
Reviewed-by: Ryan Macnak <rmacnak@google.com >
2019-05-31 21:40:32 +00:00
Liam Appelbe
c4d1d2a29d
[vm] Remove #include in runtime_offsets_list that breaks flutter
...
Bug: https://github.com/dart-lang/sdk/issues/36839
Change-Id: I618c8b2ca1be6015550044197e16e7eac07af0a3
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/104189
Reviewed-by: Ryan Macnak <rmacnak@google.com >
Commit-Queue: Liam Appelbe <liama@google.com >
2019-05-30 21:26:05 +00:00
Alexander Markov
372b02d97f
[vm/bytecode] Add information about local variables to bytecode
...
Change-Id: I22bbd3b7ea0cccc0a8d721c3766a80ae1c72060d
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/87701
Commit-Queue: Alexander Markov <alexmarkov@google.com >
Reviewed-by: Régis Crelier <regis@google.com >
Reviewed-by: Ryan Macnak <rmacnak@google.com >
2019-05-30 21:21:44 +00:00
Liam Appelbe
3015d79371
[vm] Create offsets_extractor tool.
...
First sub-CL of https://dart-review.googlesource.com/c/sdk/+/100644
A big chunk of the original CL is to do with switching anything that tries
to get the offset of a field in a class to do so using constants generated
by offsets_extractor, rather than introspecting the C++ classes with macros.
This CL just checks in the offsets_extractor tool and its output, as well as
a few bits and pieces needed to make it run.
Bug: https://github.com/dart-lang/sdk/issues/36839
Change-Id: I0d2055c21e2d19260cd77abea7e0a1d880bea6d7
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/103487
Commit-Queue: Liam Appelbe <liama@google.com >
Reviewed-by: Vyacheslav Egorov <vegorov@google.com >
2019-05-30 18:41:56 +00:00
Alexander Aprelev
2492d40829
[vm/disassembler] Remove redundant assert.
...
Fixes https://github.com/dart-lang/sdk/issues/37115 .
Change-Id: Ic8a94fd0d3ae6d163f45b629f222c452ae8cc02d
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/104062
Reviewed-by: Ryan Macnak <rmacnak@google.com >
Commit-Queue: Alexander Aprelev <aam@google.com >
2019-05-29 17:49:01 +00:00
Daco Harkes
2878bfde6c
[vm/ffi] Fix ffi trampoline class finalization
...
Fixes: https://github.com/dart-lang/sdk/issues/37100
Change-Id: I5b1ab44da2ead7edb347fcf5ceee3cad7f396ed7
Cq-Include-Trybots: luci.dart.try:vm-kernel-linux-debug-simdbc64-try, vm-kernel-mac-debug-simdbc64-try, vm-kernel-reload-mac-debug-simdbc64-try, vm-kernel-linux-debug-ia32-try, vm-dartkb-linux-debug-simarm64-try
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/103841
Commit-Queue: Daco Harkes <dacoharkes@google.com >
Reviewed-by: Vyacheslav Egorov <vegorov@google.com >
2019-05-28 14:53:06 +00:00
Daco Harkes
db599d4005
[vm/ffi] Fix GC crash in SimDBC
...
Ffi trampolines did not have a stack map in IL in DBC. Adds stack maps.
Fixes: https://github.com/dart-lang/sdk/issues/37069
Change-Id: I81da9c2d1941e67678b96a25f6dc377ee40280ba
Cq-Include-Trybots: luci.dart.try:vm-kernel-linux-debug-simdbc64-try, vm-kernel-mac-debug-simdbc64-try,vm-kernel-reload-mac-debug-simdbc64-try
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/103814
Reviewed-by: Vyacheslav Egorov <vegorov@google.com >
Commit-Queue: Daco Harkes <dacoharkes@google.com >
2019-05-28 10:10:04 +00:00
Vyacheslav Egorov
969038934a
[compiler] Fix EmitTestAndCall for a complete call of a Smi method.
...
In rare circumstances we can generate a complete monomorphic
PolymorphicInstanceCall targeting a method of Smi class.
In this case we don't need to check anything - we can simply emit a
static call.
(This fixes a bug in the incorrect fix submitted earlier as
c67b9f2331 - even if call is complete
we still need to check for a smi receiver if there are more possible
receiver classes)
Fixes #37019
Bug: 37019
Change-Id: If0250ba2811f00cc4fe595bf7cd03a7c0d820076
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/103809
Reviewed-by: Vyacheslav Egorov <vegorov@google.com >
Commit-Queue: Vyacheslav Egorov <vegorov@google.com >
2019-05-27 15:53:40 +00:00
Vyacheslav Egorov
c67b9f2331
[compiler] Fix EmitTestAndCall for a complete call of a Smi method.
...
In rare circumstances we can generate a complete monomorphic
PolymorphicInstanceCall targeting a method of Smi class.
In this case we don't need to check anything - we can simply emit a
static call.
Fixes https://github.com/dart-lang/sdk/issues/37019
Change-Id: I6a0d0f30e191d887eb57bc00b868526b84f5083d
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/103807
Commit-Queue: Vyacheslav Egorov <vegorov@google.com >
Commit-Queue: Daco Harkes <dacoharkes@google.com >
Auto-Submit: Vyacheslav Egorov <vegorov@google.com >
Reviewed-by: Daco Harkes <dacoharkes@google.com >
2019-05-27 14:11:00 +00:00
Samir Jindel
afc54e23e3
[vm/ffi] FFI callbacks on ARM64.
...
For design context and motivation, see go/dart-ffi-callbacks
Change-Id: Ie463a462c8676c4a1973f377acee067253aca9f0
Cq-Include-Trybots: luci.dart.try:vm-kernel-linux-debug-simdbc64-try, vm-kernel-linux-release-simdbc64-try, vm-kernel-mac-debug-simdbc64-try, vm-kernel-mac-release-simdbc64-try, vm-kernel-reload-mac-debug-simdbc64-try, vm-kernel-reload-mac-release-simdbc64-try, vm-kernel-linux-debug-ia32-try, vm-dartkb-linux-debug-simarm64-try, vm-kernel-win-debug-ia32-try
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/101825
Commit-Queue: Samir Jindel <sjindel@google.com >
Reviewed-by: Aart Bik <ajcbik@google.com >
Reviewed-by: Daco Harkes <dacoharkes@google.com >
2019-05-27 11:05:18 +00:00
Samir Jindel
0a5e5995e8
[vm/ffi] FFI callbacks on IA32.
...
Second part of implementing FFI callbacks, see go/dart-ffi-callbacks for design context.
Change-Id: Ibe8195e8cb40e0c1932b179fbc6df2b9668e2fa2
Cq-Include-Trybots: luci.dart.try:vm-kernel-linux-debug-simdbc64-try, vm-kernel-linux-release-simdbc64-try, vm-kernel-mac-debug-simdbc64-try, vm-kernel-mac-release-simdbc64-try, vm-kernel-reload-mac-debug-simdbc64-try, vm-kernel-reload-mac-release-simdbc64-try, vm-kernel-linux-debug-ia32-try, vm-dartkb-linux-debug-simarm64-try, vm-kernel-win-debug-ia32-try
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/100582
Commit-Queue: Samir Jindel <sjindel@google.com >
Reviewed-by: Aart Bik <ajcbik@google.com >
Reviewed-by: Daco Harkes <dacoharkes@google.com >
2019-05-27 10:49:48 +00:00