Commit Graph

13143 Commits

Author SHA1 Message Date
Ryan Macnak 240f25a940 [vm] Add --disassemble-relative to use PC offsets instead of absolute PCs in --disassemble's output.
Makes it much easier to compare the output when making VM changes.

--disassemble:
        ;; Invocation Count Check
0x7f82b8900320    498b7c2437             movq rdi,[r12+0x37]
0x7f82b8900325    ff8783000000           incl [rdi+0x83]
0x7f82b890032b    81bf8300000030750000   cmpl [rdi+0x83],0x7530
0x7f82b8900335    7c07                   jl 0x00007f82b890033e
0x7f82b8900337    41ffa6b8010000         jmp [thr+0x1b8]

--disassemble --disassemble-relative:
        ;; Invocation Count Check
0x0    498b7c2437             movq rdi,[r12+0x37]
0x5    ff8783000000           incl [rdi+0x83]
0xb    81bf8300000030750000   cmpl [rdi+0x83],0x7530
0x15    7c07                   jl +9
0x17    41ffa6b8010000         jmp [thr+0x1b8]

Change-Id: Ie05c532f830027b928d7d1d57509eb237157a127
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/106600
Commit-Queue: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Régis Crelier <regis@google.com>
Reviewed-by: Aart Bik <ajcbik@google.com>
2019-06-19 22:36:00 +00:00
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
Ryan Macnak 92701dfa48 [vm] Document clock compatibility between Timeline.now and Dart_TimelineGetMicros.
Change-Id: Ife4b5360b9c42221b9dac84014d072f60cd8f11c
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/106720
Commit-Queue: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Ben Konyi <bkonyi@google.com>
Reviewed-by: Siva Annamalai <asiva@google.com>
2019-06-19 21:17:51 +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
Ben Konyi a75ded625e [ VM / Service ] Made VM timeline functionality public through the service API.
Change-Id: I8228f0417047af53edc6f570940d452da3155bbd
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/106061
Reviewed-by: Siva Annamalai <asiva@google.com>
2019-06-19 16:06:12 +00:00
Ryan Macnak 24cd83904a [vm] Fix regression in protobuf_encode benchmark.
Regression introduced in 1e24fe7d69.

Change-Id: I3a396058d2a2a30bef40b458c0f6bf1ba4fdbb54
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/106540
Reviewed-by: Alexander Markov <alexmarkov@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2019-06-19 00:44:21 +00:00
Ryan Macnak f925cd4422 [vm, elf] Speculatively align section header table.
Change-Id: Iec820e4fe0df691e914d593ffce13bcc8e5cddf5
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/106485
Reviewed-by: Siva Annamalai <asiva@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2019-06-18 22:04:29 +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 d2caa7f8b1 [vm] Document why we don't use thread_local on iOS
For more background, see:

https://stackoverflow.com/a/29929949
https://github.com/abseil/abseil-cpp/blob/8f117240/absl/base/config.h#L142

Change-Id: I604bfcc0bac9fe5f59340e668fe01aeecdea8073
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/106433
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2019-06-18 18:03:45 +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
Ryan Macnak 6ab173a68d [vm, elf] Add a terminating DT_NULL to .dynamic.
gold appears to assume shared libraries have one, though it has no effect during loading.

Bug: b/135481201
Change-Id: I6da4f829d0ab9a8e6174ddd39db6c206794f8d4e
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/106431
Commit-Queue: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Siva Annamalai <asiva@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
2019-06-18 17:45:45 +00:00
Ryan Macnak 9ac3a733d2 [vm, elf] Eliminate diff of readelf -a between a binary that has and has not been processed by strip.
- Place program table in the first file page along with the ELF header, instead of a separate page.
 - Load program table into the first memory page, instead of after all other segments.
 - Place section table at the end, instead of after the program table.
 - Sort .hash .dynsym .dystr in the same order as strip.
 - Don't mark .shstrtab as allocated.
 - Populate unused physical address fields.

The issue on Android seems to be due to the program table placement.

Bug: https://github.com/flutter/flutter/issues/34308
Change-Id: I337dbdc76553e85eca7156256b97c99592011612
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/106440
Commit-Queue: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
2019-06-18 17:34:25 +00:00
Samir Jindel 48f19ef961 [vm/ffi] Fix snapshot serialization of FFI objects.
Change-Id: I78557211da79f5282339fbcf30b3f81ab56cb361
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/106345
Commit-Queue: Samir Jindel <sjindel@google.com>
Auto-Submit: Samir Jindel <sjindel@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
2019-06-18 13:17:14 +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
Matthew Dempsky 8fc98147e6 [vm] Replace MessageHandler::task_ with task_running_
MessageHandler doesn't actually need a reference to the
ThreadPool::Task, it just wants to know if one is running or not.
Replacing it with a simple boolean will simplify switching
ThreadPool::Task to use std::unique_ptr.

Updates #37244.

Change-Id: Ie69ec38523f009ba559678fd544efa4cc8ead7dd
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/106008
Reviewed-by: Régis Crelier <regis@google.com>
Commit-Queue: Matthew Dempsky <mdempsky@google.com>
2019-06-18 00:14:28 +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
Matthew Dempsky aafc6b7d5b [vm] Use std::unique_ptr for IsolateSpawnState
Updates #37244.

Change-Id: I03b4f0b291bd4e4e9cde5de31ec80da2b8b6c6cf
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/101740
Reviewed-by: Siva Annamalai <asiva@google.com>
Commit-Queue: Matthew Dempsky <mdempsky@google.com>
2019-06-17 23:03: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 8d39e3456f [vm/aot] Minor improvements to make snapshot profiles more useful.
Change-Id: I614d0af3fb3b2bcb642f13d767c385d255b43d5c
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/105580
Commit-Queue: Samir Jindel <sjindel@google.com>
Reviewed-by: Ryan Macnak <rmacnak@google.com>
2019-06-17 13:09:50 +00:00
Samir Jindel 43382ded6d [vm/ffi] Regression test for dartbug.com/37133
Also removed some redundant test code.

Change-Id: Idbb343d35592816814d473de2317324029481c6f
Cq-Include-Trybots: luci.dart.try:vm-ffi-android-debug-arm-try,vm-kernel-win-debug-x64-try,vm-kernel-win-debug-ia32-try,vm-kernel-mac-debug-x64-try,vm-kernel-reload-mac-debug-simdbc64-try
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/105590
Commit-Queue: Samir Jindel <sjindel@google.com>
Reviewed-by: Daco Harkes <dacoharkes@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
2019-06-17 10:47:00 +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 d47bb87a51 [vm, compiler] Disable unopt megamorphic call specialization.
Bug: https://github.com/dart-lang/sdk/issues/37260
Change-Id: I66a1661da9483529dc96be804863224d9afb9c48
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/106006
Reviewed-by: Siva Annamalai <asiva@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2019-06-14 01:17:30 +00:00
Ben Konyi 74af4a00b2 [ VM / Service ] Created public implementation of getAllocationProfile RPC
Change-Id: I8c8cb4d47466ae6a298961652eeded762c769568
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/105730
Reviewed-by: Siva Annamalai <asiva@google.com>
Commit-Queue: Ben Konyi <bkonyi@google.com>
2019-06-13 23:45:52 +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
Ryan Macnak d6eac664ee [vm] Hoist zone access in function name printing.
Change-Id: I97166486514044d0a8396cbc6bf92ae391ac4437
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/97276
Reviewed-by: Régis Crelier <regis@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2019-06-13 19:24:16 +00:00
Régis Crelier 24c6c6f996 [vm/fuchsia] Make use of the new alignment flags when allocating memory.
Change-Id: I05994746156b35ad29d311461933359922de9959
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/105545
Reviewed-by: Zach Anderson <zra@google.com>
Commit-Queue: Régis Crelier <regis@google.com>
2019-06-13 18:25:40 +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
Aske Simon Christensen 50efd7f187 [Kernel] Add list of unused arguments to InstanceCreation nodes.
During constant evaluation, unused arguments to a const constructor are
thrown away after evaluation, since their values do not affect the
resulting instance constant. If such an unused argument ends up
unevaluated, any errors that would arise in the final evaluation are
not reported.

This CL adds space in the Kernel AST for saving these unevaluated
expressions so they can be checked during final constant evaluation.

Even though this is an incompatible change, no update is needed to the
VM code (except for the version bump), since the VM does not support
InstanceCreation nodes in the first place.

Change-Id: I4752562c1164efbba79eb018c15b07ed8354ce5f
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/105761
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Commit-Queue: Aske Simon Christensen <askesc@google.com>
2019-06-13 09:42:26 +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 8fa1cb2911 [vm] Remove Dart 1 enum implementation.
Change-Id: I5033eacf0fb66bb3b922e5c0f62d986c89f81708
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/105801
Reviewed-by: Siva Annamalai <asiva@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2019-06-12 19:26:32 +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
Régis Crelier 2cc0261f39 [vm/bytecode] Collect token positions in closures and field initializers.
Allow single stepping and breakpoint setting on a few more bytecodes.
Limit traversing of closure object pool to avoid cycles.

Change-Id: I96befe0ff6255cd2e15464e6fe084896e4f2daff
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/105541
Commit-Queue: Régis Crelier <regis@google.com>
Reviewed-by: Alexander Markov <alexmarkov@google.com>
2019-06-11 19:03:28 +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
Alexander Markov 5167ec93fc [vm] Remove Class::NumOwnTypeArguments()
Calculation of Class::NumTypeArguments() is reimplemented so that it does
no require separate calculation of Class::NumOwnTypeArguments().
Number of own type arguments is no longer stored in Class, and has_pragma
bit is moved into state_bits.

This simplifies overall calculation and does not require to keep both
num_type_arguments and num_own_type_arguments. This also allows us to add
up to 15 more flag bits to Class.

Change-Id: Iac7a751145fea7adb673ab9369eeb8eea5c5794d
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/105544
Reviewed-by: Régis Crelier <regis@google.com>
Commit-Queue: Alexander Markov <alexmarkov@google.com>
2019-06-11 00:57:46 +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
Matthew Dempsky e1fdbce64c [vm] Fix memory leak in TestCase::EvaluateExpression
The Dart_KernelCompilationResult type is clumsy to use because it has
multiple owning pointers, and TestCase needs to be better about
remembering to release memory in all code paths. But adding this
free() call at least fixes the reported leak.

Fixes #37154.

Change-Id: I075ccfd20c55026f2443c3d0aef3d2d62192ab3b
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/105406
Reviewed-by: Siva Annamalai <asiva@google.com>
Commit-Queue: Matthew Dempsky <mdempsky@google.com>
2019-06-08 00:19:29 +00:00
Ben Konyi 4b009e1d01 [ Service ] Updated Q/A with section on adding experimental functionality
Change-Id: I9cc051e7b53f1d9850f6129656196ab47b7f2bf7
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/105022
Reviewed-by: Siva Annamalai <asiva@google.com>
2019-06-07 19:51:31 +00:00
Ryan Macnak 6d608fb52b [gen_snapshot] Provide option to generate ELF libraries pre-stripped.
Change-Id: I13631e21e114296a268aeeaad570b8613273af10
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/105121
Commit-Queue: Siva Annamalai <asiva@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
Reviewed-by: Siva Annamalai <asiva@google.com>
2019-06-07 17:43:05 +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