Commit Graph

37 Commits

Author SHA1 Message Date
Ryan Macnak 41a9c38433 [vm, compiler] Shrink deopt stub and runtime call sequences.
dart2js release
AOT X64 Instructions(CodeSize): 10171456 -> 10090272 (-0.798%)
AOT ARM Instructions(CodeSize): 10814976 -> 10708512 (-0.984%)
AOT ARM64 Instructions(CodeSize): 11751328 -> 11646464 (-0.892%)
JIT X64 Instructions(CodeSize): 14296224 -> 13593536 (-4.92%)
JIT ARM Instructions(CodeSize): 16034352 -> 15685664 (-2.17%)
JIT ARM64 Instructions(CodeSize): 17207968 -> 16901504 (-1.78%)

Bug: https://github.com/dart-lang/sdk/issues/26033
Change-Id: Ic41a80fe8a90973811e74471e13f3edb6e4bffb6
Reviewed-on: https://dart-review.googlesource.com/c/77987
Reviewed-by: Alexander Markov <alexmarkov@google.com>
2018-10-08 17:44:43 +00:00
Ryan Macnak 808ed6238b [vm, compiler] Make register allocator instead of assembler put the write barrier value into a fixed register.
Unlike the assembler, the register allocator is in a position to avoid a move. Use the call result register since it is the most popular value source.

This pattern will also be needed to get the write barrier slot into a fixed register for card-marking, since X64 and ARM don't have a TMP2.

dart2js aot product:
X64 Instructions(CodeSize): 9049952 -> 8994240 (-0.62%)
ARM Instructions(CodeSize): 9772096 -> 9711696 (-0.62%)
ARM64 Instructions(CodeSize): 10185056 -> 10122496 (-0.61%)

Bug: https://github.com/dart-lang/sdk/issues/34002
Change-Id: Id2e9dd7b3d86069a9da3ba4e141720511ce6399e
Reviewed-on: https://dart-review.googlesource.com/76307
Commit-Queue: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Alexander Markov <alexmarkov@google.com>
2018-09-26 23:55:27 +00:00
Ryan Macnak 78d9a281d3 [vm, arm] Globally block LR for register allocation.
Flutter Gallery release:
Instructions(CodeSize): 5668368 -> 5670880 (+0.044%)

Fixes #34411

Bug: https://github.com/dart-lang/sdk/issues/34411
Change-Id: I5281ac9609ec5953cdaa881226f7034a5697d0ce
Reviewed-on: https://dart-review.googlesource.com/74923
Commit-Queue: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
2018-09-14 21:58:29 +00:00
Ryan Macnak ebca3aba60 [vm, gc] Concurrent marking barrier.
Code size impact on flutter_gallery after enabled:
ARM32 Instructions(CodeSize): 5892064 -> 6110592 (+3.71%)
ARM64 Instructions(CodeSize): 6307104 -> 6514528 (+3.28%)

Bug: https://github.com/dart-lang/sdk/issues/34002
Change-Id: If093f24e4dc6bf29f407cc45e95bb2274fc53dce
Reviewed-on: https://dart-review.googlesource.com/68481
Commit-Queue: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
2018-09-11 21:14:25 +00:00
Ryan Macnak 482d27dfe7 [vm, compiler] Block LR for StoreStaticField and StoreIndexed on ARM.
Skip barrier for x.slot = x. Note that box allocations are non-Smi.

Bug: https://github.com/dart-lang/sdk/issues/34411
Change-Id: I846639747f0b583c24cb6ecf40548cf32b76d580
Reviewed-on: https://dart-review.googlesource.com/74324
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
Reviewed-by: Samir Jindel <sjindel@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2018-09-11 17:05:24 +00:00
Martin Kustermann 05ccfa8502 [VM] Reduce size of monomorphic entries in AOT on ARM/ARM64 & use smaller tail-calls in various places
Decreases flutter gallery RX size by 1.5 % on ARM
Decreases flutter gallery RX size by 1.3 % on ARM64

Improves arm performance (significantly), e.g. DeltaBlue +6.8%, many typed data benchmarks +xx%
Improves arm64 performance, e.g. DeltaBlue +3.1%


Issue https://github.com/dart-lang/sdk/issues/33274

Change-Id: Iaa6cc31597e0bcde471ec2e966730c3f2c9fdd05
Reviewed-on: https://dart-review.googlesource.com/73180
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Martin Kustermann <kustermann@google.com>
2018-09-11 09:03:02 +00:00
Martin Kustermann c5295037c4 [VM] Use one instruction to unwind frame and return instead of two on ARM
This reduces AOT flutter gallery RX size by 0.81 %.

Issue https://github.com/dart-lang/sdk/issues/33274

Change-Id: I1a3c3f48af9ae5d89d3d89da1d86c798145dbd99
Reviewed-on: https://dart-review.googlesource.com/72383
Commit-Queue: Martin Kustermann <kustermann@google.com>
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
2018-08-31 12:23:54 +00:00
Ryan Macnak 2cfe3b36ab [vm, gc] Adjust header bits to allow generational and incremental barrier filters to run together in one shift-and-mask.
Claims 3 header bits :(

Bug: https://github.com/dart-lang/sdk/issues/34002
Change-Id: Ia4fcc9f2b38ed5aa98a28823616b7de766cdde2d
Reviewed-on: https://dart-review.googlesource.com/69222
Commit-Queue: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Siva Annamalai <asiva@google.com>
2018-08-29 22:17:55 +00:00
Martin Kustermann df2d187f74 [VM] Move the ObjectPoolWrapper out of the Assembler
Issue https://github.com/dart-lang/sdk/issues/33274

Change-Id: I2e295a357939bc7c966c0658c344fcc4268669c1
Reviewed-on: https://dart-review.googlesource.com/71166
Commit-Queue: Martin Kustermann <kustermann@google.com>
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
2018-08-23 08:00:15 +00:00
Martin Kustermann 5d7ca9cd1e [VM] Add "patchability" bit to ObjectPool objects
This allows initializing a new pool from an old pool while preserving
the patchability bit.

Issue https://github.com/dart-lang/sdk/issues/33274

Change-Id: I369bb852aea8e183da2fbf7ca3571312dc5fda27
Reviewed-on: https://dart-review.googlesource.com/71162
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Martin Kustermann <kustermann@google.com>
2018-08-23 07:06:26 +00:00
Martin Kustermann 8c30475728 [VM] Fix arm check for whether a branch distance can be encoded
Change-Id: I037b8a5877d5794f4a5b451ec577b8debc841511
Reviewed-on: https://dart-review.googlesource.com/71143
Commit-Queue: Martin Kustermann <kustermann@google.com>
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
2018-08-22 10:07:28 +00:00
Martin Kustermann b7790e3147 [VM] Make all of our compilation pipeline use a [FrameLayout] to generate code
This will allow us to have configurable frame layouts during
gen_snapshot/dart_bootstrap.

Issue https://github.com/dart-lang/sdk/issues/33274

Change-Id: I18945189034be1a585c1e2edcf53a4b7537204c2
Reviewed-on: https://dart-review.googlesource.com/59880
Commit-Queue: Martin Kustermann <kustermann@google.com>
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
2018-08-21 10:26:12 +00:00
Samir Jindel dea7de23bd [vm] Use multiple entrypoints to remove unnecessary checks on calls against "this".
Test Plan:

Behavioral correctness should be ensured by existing tests. Tests in vm/dart/entrypoints
ensure that the unchecked entrypoint is used in cases where the optimization should trigger.

Bug: https://github.com/dart-lang/sdk/issues/31798

Change-Id: I5b880b2dfa6343b4bb0a96ad23562facff73e41f
Cq-Include-Trybots: luci.dart.try:vm-kernel-win-release-x64-try,vm-kernel-optcounter-threshold-linux-release-x64-try,vm-kernel-precomp-linux-debug-x64-try,vm-kernel-precomp-linux-release-simarm-try,vm-kernel-precomp-linux-release-simarm64-try,vm-kernel-precomp-linux-release-x64-try,vm-kernel-precomp-win-release-x64-try
Reviewed-on: https://dart-review.googlesource.com/69741
Commit-Queue: Samir Jindel <sjindel@google.com>
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
2018-08-20 16:56:22 +00:00
Ryan Macnak 39d4184b04 Reapply "[vm, compiler] Fix incorrect derivation of a concrete cid from FutureOr."
Work around checked-mode bug where parameter type checks don't dominate all uses.

Test: lib_2/mirrors/invocation_fuzz_test/smi co19/LibTest/isolate/Isolate/spawn_A02_t06
Bug: https://github.com/dart-lang/sdk/issues/34128
Change-Id: Ic51b0429d1b2b648042abad18b1acc25c1af60c0
Reviewed-on: https://dart-review.googlesource.com/70460
Reviewed-by: Alexander Markov <alexmarkov@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2018-08-17 00:26:18 +00:00
Ryan Macnak d97920e9c8 Revert "[vm, compiler] Fix incorrect derivation of a concrete cid from FutureOr."
This reverts commit 9faae801ac.

Reason for revert: Failures on JIT debug bots

Original change's description:
> [vm, compiler] Fix incorrect derivation of a concrete cid from FutureOr.
> 
> Bug: https://github.com/dart-lang/sdk/issues/34128
> Change-Id: I694b3b7556ee999de3c67c1cd4a8a98654365c24
> Reviewed-on: https://dart-review.googlesource.com/69480
> Commit-Queue: Ryan Macnak <rmacnak@google.com>
> Reviewed-by: Alexander Markov <alexmarkov@google.com>
> Reviewed-by: Aart Bik <ajcbik@google.com>
> Reviewed-by: Vyacheslav Egorov <vegorov@google.com>

TBR=vegorov@google.com,rmacnak@google.com,alexmarkov@google.com,ajcbik@google.com

Change-Id: Id12351f5c231e6b5ebaa900bf0a1bca7d32cdad5
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: https://github.com/dart-lang/sdk/issues/34128
Reviewed-on: https://dart-review.googlesource.com/69780
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2018-08-13 19:55:06 +00:00
Ryan Macnak 9faae801ac [vm, compiler] Fix incorrect derivation of a concrete cid from FutureOr.
Bug: https://github.com/dart-lang/sdk/issues/34128
Change-Id: I694b3b7556ee999de3c67c1cd4a8a98654365c24
Reviewed-on: https://dart-review.googlesource.com/69480
Commit-Queue: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Alexander Markov <alexmarkov@google.com>
Reviewed-by: Aart Bik <ajcbik@google.com>
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
2018-08-13 16:23:17 +00:00
Samir Jindel 01e69cc0c4 Take 3 for "[vm] Factor out more of the slow-path of the store barrier into the stubs."
There is no difference from the previous version of this CL.

This depends on https://dart-review.googlesource.com/c/sdk/+/67220/3 which fixes a bug
in `CompileType` that was causing `ShouldEmitStoreBarrier()` to return different results
across multiple calls on the same instruction.

The buildbot on which this caused a failure is run as a tryjob below.

Change-Id: I078b587f7e23e88d95f3b05c966019a433ba57d9
Reviewed-on: https://dart-review.googlesource.com/67221
Commit-Queue: Samir Jindel <sjindel@google.com>
Reviewed-by: Alexander Markov <alexmarkov@google.com>
2018-07-27 18:51:20 +00:00
Samir Jindel 9686636f6b Revert "Re-land "[vm] Factor out more of the slow-path of the store barrier into the stubs.""
This reverts commit 79ed0553e9.

Reason for revert: Issue with register allocator on SIMARM.

Original change's description:
> Re-land "[vm] Factor out more of the slow-path of the store barrier into the stubs."
> 
> When compiling instrinsic graphs on ARM and ARM64 we need to save LR when emitting
> the store barrier because the intrinsics don't have frames and won't restore it before
> returning.
> 
> Original revision is in Patchset 1.
> 
> Change-Id: I58cee3941c82efa22bd6ddbd00e00c489de53898
> Cq-Include-Trybots: luci.dart.try: vm-kernel-optcounter-threshold-linux-release-x64-try,vm-kernel-precomp-linux-debug-x64-try,vm-kernel-precomp-linux-release-simarm-try,vm-kernel-precomp-linux-release-simarm64-try,vm-kernel-precomp-linux-release-x64-try,vm-kernel-precomp-win-release-x64-try,vm-kernel-linux-release-simarm-try,vm-kernel-linux-release-simarm64-try
> Reviewed-on: https://dart-review.googlesource.com/66382
> Commit-Queue: Samir Jindel <sjindel@google.com>
> Reviewed-by: Alexander Markov <alexmarkov@google.com>

TBR=alexmarkov@google.com,sjindel@google.com

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

Change-Id: If8f8bc1a508f300ab83b03a0be7e0c318e5f99fe
Cq-Include-Trybots: luci.dart.try: vm-kernel-optcounter-threshold-linux-release-x64-try, vm-kernel-precomp-linux-debug-x64-try, vm-kernel-precomp-linux-release-simarm-try, vm-kernel-precomp-linux-release-simarm64-try, vm-kernel-precomp-linux-release-x64-try, vm-kernel-precomp-win-release-x64-try, vm-kernel-linux-release-simarm-try, vm-kernel-linux-release-simarm64-try
Reviewed-on: https://dart-review.googlesource.com/67140
Reviewed-by: Samir Jindel <sjindel@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
Commit-Queue: Samir Jindel <sjindel@google.com>
2018-07-27 15:01:44 +00:00
Samir Jindel 79ed0553e9 Re-land "[vm] Factor out more of the slow-path of the store barrier into the stubs."
When compiling instrinsic graphs on ARM and ARM64 we need to save LR when emitting
the store barrier because the intrinsics don't have frames and won't restore it before
returning.

Original revision is in Patchset 1.

Change-Id: I58cee3941c82efa22bd6ddbd00e00c489de53898
Cq-Include-Trybots: luci.dart.try: vm-kernel-optcounter-threshold-linux-release-x64-try,vm-kernel-precomp-linux-debug-x64-try,vm-kernel-precomp-linux-release-simarm-try,vm-kernel-precomp-linux-release-simarm64-try,vm-kernel-precomp-linux-release-x64-try,vm-kernel-precomp-win-release-x64-try,vm-kernel-linux-release-simarm-try,vm-kernel-linux-release-simarm64-try
Reviewed-on: https://dart-review.googlesource.com/66382
Commit-Queue: Samir Jindel <sjindel@google.com>
Reviewed-by: Alexander Markov <alexmarkov@google.com>
2018-07-25 14:11:05 +00:00
Alexander Markov 2eba6faa30 Revert "[vm] Factor out more of the slow-path of the store barrier into the stubs."
This reverts commit b3e289a95e.

Reason for revert: multiple failures on *-simarm, *-simarm64 and vm-precomp-android-release-2-3-be bots.

Original change's description:
> [vm] Factor out more of the slow-path of the store barrier into the stubs.
> 
> This delivers a 2.1% code size reduction on Flutter Gallery, and roughly 1.6% speed
> improvement on dart2js(dart2js).
> 
> Cq-Include-Trybots: luci.dart.try: vm-kernel-optcounter-threshold-linux-release-x64-try,vm-kernel-precomp-linux-debug-x64-try,vm-kernel-precomp-linux-release-simarm-try,vm-kernel-precomp-linux-release-simarm64-try,vm-kernel-precomp-linux-release-x64-try,vm-kernel-precomp-win-release-x64-try
> Change-Id: I2d2ceca8707d5e6fba79c558624d611f9e17d21a
> Reviewed-on: https://dart-review.googlesource.com/65060
> Commit-Queue: Samir Jindel <sjindel@google.com>
> Reviewed-by: Alexander Markov <alexmarkov@google.com>

TBR=alexmarkov@google.com,sjindel@google.com

Change-Id: Iae83a5108d56cbd30e5727217b5ee043449f82ff
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Cq-Include-Trybots: luci.dart.try: vm-kernel-optcounter-threshold-linux-release-x64-try, vm-kernel-precomp-linux-debug-x64-try, vm-kernel-precomp-linux-release-simarm-try, vm-kernel-precomp-linux-release-simarm64-try, vm-kernel-precomp-linux-release-x64-try, vm-kernel-precomp-win-release-x64-try
Reviewed-on: https://dart-review.googlesource.com/66360
Reviewed-by: Alexander Markov <alexmarkov@google.com>
Commit-Queue: Alexander Markov <alexmarkov@google.com>
2018-07-24 00:44:01 +00:00
Samir Jindel b3e289a95e [vm] Factor out more of the slow-path of the store barrier into the stubs.
This delivers a 2.1% code size reduction on Flutter Gallery, and roughly 1.6% speed
improvement on dart2js(dart2js).

Cq-Include-Trybots: luci.dart.try: vm-kernel-optcounter-threshold-linux-release-x64-try,vm-kernel-precomp-linux-debug-x64-try,vm-kernel-precomp-linux-release-simarm-try,vm-kernel-precomp-linux-release-simarm64-try,vm-kernel-precomp-linux-release-x64-try,vm-kernel-precomp-win-release-x64-try
Change-Id: I2d2ceca8707d5e6fba79c558624d611f9e17d21a
Reviewed-on: https://dart-review.googlesource.com/65060
Commit-Queue: Samir Jindel <sjindel@google.com>
Reviewed-by: Alexander Markov <alexmarkov@google.com>
2018-07-23 22:07:39 +00:00
Aart Bik e3323ae918 [vm/inliner] Inline typed data on 32-bit archs.
Rationale:
All recent improvements, now for 32-bit too.

Performance:
Many large improvements on micro benchmarks.
Meteor down as expected.


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

Change-Id: Ie9ebcfdfe9c5e265595c95d5e943ae35c5700a97
Reviewed-on: https://dart-review.googlesource.com/63685
Commit-Queue: Aart Bik <ajcbik@google.com>
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
2018-07-06 16:32:26 +00:00
Samir Jindel 771454a1cf [vm/precomp] Extend support for slow-path code sharing to ARM and ARM64.
Test Plan:

Covered by existing slow-path code sharing tests

Cq-Include-Trybots:luci.dart.try:vm-kernel-precomp-linux-debug-x64-try;luci.dart.try:vm-kernel-precomp-linux-release-simarm-try;luci.dart.try:vm-kernel-precomp-linux-release-simarm64-try;luci.dart.try:vm-kernel-precomp-linux-release-x64-try;luci.dart.try:vm-kernel-precomp-win-release-x64-try
Change-Id: Iab999e0abfa7677d60ebb259a1d3d128bb49f879
Reviewed-on: https://dart-review.googlesource.com/62903
Commit-Queue: Samir Jindel <sjindel@google.com>
Reviewed-by: Alexander Markov <alexmarkov@google.com>
2018-07-02 14:23:23 +00:00
Ryan Macnak 2f664c141f [vm] Shorten the write barrier sequence.
flutter_gallery, release, arm32
Instructions(CodeSize): 6989360 -> 6915696 (-1.05%)

Change-Id: If8a39c8f28d424959d753e96527a59bf1e9444c1
Reviewed-on: https://dart-review.googlesource.com/61110
Reviewed-by: Siva Annamalai <asiva@google.com>
Reviewed-by: Alexander Markov <alexmarkov@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2018-06-20 20:18:02 +00:00
Ryan Macnak eb82559db2 Reapply "[vm] Add tests for determinism of script and AppJIT snapshots."
- Fix assembler->Stop("My address is not deterministic").
 - Skip tests on -cdartk + simulators as DFE is too slow.

Bug: https://github.com/dart-lang/sdk/issues/31427
Bug: https://github.com/dart-lang/sdk/issues/33264
Change-Id: Id79a8b8c8fc4b3842fcd1d3827d6d4551890b794
Reviewed-on: https://dart-review.googlesource.com/57483
Reviewed-by: Zach Anderson <zra@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2018-05-31 17:18:42 +00:00
Erik Corry c8ad75d44a [VM] Make classes movable in sliding compactor
Store class sizes off heap so we can determine the size
of their instances even while the classes are moving.

R=rmacnak@google.com

Change-Id: I7b935114f76eb8b6aaa57d65e5b7cc0070afa75f
Bug: https://github.com/dart-lang/sdk/issues/30978
Reviewed-on: https://dart-review.googlesource.com/52104
Commit-Queue: Erik Corry <erikcorry@google.com>
Reviewed-by: Ryan Macnak <rmacnak@google.com>
2018-04-26 09:38:25 +00:00
Erik Corry 79942bf18f [VM] Unify filter methods in assemblers
R=kustermann@google.com

Inspired by https://chromereviews.googleplex.com/593797014/
(Vipunen StoreField write-barrier improvements)
Next step is to move part of the write barrier to the end
of the function.
Bug:
Change-Id: I4d49625c9cf5b3488e4633084790f4a018021866
Reviewed-on: https://dart-review.googlesource.com/31100
Reviewed-by: Martin Kustermann <kustermann@google.com>
2018-03-14 07:38:45 +00:00
Zach Anderson 2cb80620bd Revert "[vm/simarm] Fix VRECPS/VRSQRTSQS instruction implementation."
This reverts commit 3da9c349d4.

Reason for revert: Broke the build on vm-kernel-precomp-linux-release-simarm

Original change's description:
> [vm/simarm] Fix VRECPS/VRSQRTSQS instruction implementation.
> 
> This instruction handles 0.0 and infinity operands
> specially because otherwise it produces NaN where it
> should produce appropriate infinity or zero.
> 
> Fixes https://github.com/dart-lang/sdk/issues/24399
> Fixes https://github.com/dart-lang/sdk/issues/26675
> 
> Change-Id: I0741d0daa8b92b4dcd780b1453c9ec449552b1fd
> Reviewed-on: https://dart-review.googlesource.com/45382
> Reviewed-by: Zach Anderson <zra@google.com>

TBR=whesse@google.com,vegorov@google.com,alexmarkov@google.com,zra@google.com

Change-Id: I413be56fdce8afa0e2faa6ed2b16ef0f68b795b0
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://dart-review.googlesource.com/45683
Reviewed-by: Zach Anderson <zra@google.com>
Commit-Queue: Zach Anderson <zra@google.com>
2018-03-09 06:09:40 +00:00
Vyacheslav Egorov 3da9c349d4 [vm/simarm] Fix VRECPS/VRSQRTSQS instruction implementation.
This instruction handles 0.0 and infinity operands
specially because otherwise it produces NaN where it
should produce appropriate infinity or zero.

Fixes https://github.com/dart-lang/sdk/issues/24399
Fixes https://github.com/dart-lang/sdk/issues/26675

Change-Id: I0741d0daa8b92b4dcd780b1453c9ec449552b1fd
Reviewed-on: https://dart-review.googlesource.com/45382
Reviewed-by: Zach Anderson <zra@google.com>
2018-03-08 17:50:29 +00:00
Ryan Macnak 6664e3c02a [vm, dbc] Implement lazily-linked natives for DBC and enable AppJIT.
Because DBC still uses code patching to implement breakpoints, running a program from DBC AppJIT may trigger a crash attempting to set a breakpoint.

Change-Id: I5d761aacec6629be946d7d2510ec3f1e3f03f4a4
Reviewed-on: https://dart-review.googlesource.com/42584
Reviewed-by: Zach Anderson <zra@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2018-02-23 02:20:12 +00:00
Ryan Macnak e6ebdccc2f [vm, armv6] Fix pool pointer offset used for large immediates.
Bug: https://github.com/dart-lang/sdk/issues/31857
Change-Id: I1d9fe0ee3234bc331a764cfc699efa820257a45c
Reviewed-on: https://dart-review.googlesource.com/34508
Reviewed-by: Alexander Markov <alexmarkov@google.com>
Reviewed-by: Zach Anderson <zra@google.com>
2018-01-16 21:15:13 +00:00
Erik Corry 1109ffcb6a [VM] Add ARM64 bitfield instructions
R=rmacnak@google.com

Also some minor cleanup in the way we encode ARM instructions.
I'll be needing these for 32 bit Smis on ARM64.
Bug:
Change-Id: I5f515590375a2c6ad11bc6f1a80a4f8e27cd82b4
Reviewed-on: https://dart-review.googlesource.com/20668
Commit-Queue: Erik Corry <erikcorry@google.com>
Reviewed-by: Ryan Macnak <rmacnak@google.com>
2017-11-16 15:34:11 +00:00
Ryan Macnak f60efb7e40 Reapply "[vm] Popcount via compiler intrinsics."
Add missing rename of CountOneBits in ARM assembler.

Change-Id: I735da06343248573a1b049109ebc2bf0d1634960
Reviewed-on: https://dart-review.googlesource.com/18504
Reviewed-by: Zach Anderson <zra@google.com>
2017-11-03 17:39:16 +00:00
Alexander Markov 841b1ad814 [VM] Improve performance of allocators on ARM in non-product mode
This CL improves performance of allocation statistic counters on ARM
by removing duplicated loads and increasing distance between dependent
loads. These statistic counters are part of allocator fast path in a
non-product mode.

This change improves performance of gestures/velocity_tracker_bench
Flutter micro-benchmark in 'flutter run --profile' mode:

Before: 3352 µs
After:  3156 µs (-5.8%)
(minimum of 5 runs)
Change-Id: Ic7998318d9ca3e7997379d0054faaf5b0b569bb6
Reviewed-on: https://dart-review.googlesource.com/15640
Reviewed-by: Zach Anderson <zra@google.com>
Reviewed-by: Siva Annamalai <asiva@google.com>
Commit-Queue: Alexander Markov <alexmarkov@google.com>
2017-10-20 18:01:49 +00:00
Ryan Macnak 98edf8d2e5 [vm] Apply the large object threshold to inline allocation paths.
Previously allocations of Arrays/TypedData from generated code would try to allocate objects of any size into new-space. These allocation sites would only end up allocating into old-space if new-space didn't have enough free space and the allocation takes the slow path into the runtime. This means the allocation space from generated code was unstable. This change makes the allocation policy consistent between generated code and C++: objects larger than kNewAllocatableSize are always allocated into old-space.

This change regresses the microbenchmarks Streams.callbacks and Streams.controller (-44% and -33% on x64) because they allocate large, short-lived arrays.

Change-Id: I81c65af305b45b6fd40ec81d4a4ddc015bfc039c
Reviewed-on: https://dart-review.googlesource.com/4300
Reviewed-by: Siva Annamalai <asiva@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2017-09-21 17:46:06 +00:00
Régis Crelier e0300086d1 [VM precompiler generic functions] Fix previous bad commit.
Generic functions cannot be called via monomorphic checked entries, because
the argument descriptor is lost. This limitation was removed by error and not
properly tested. It is reintroduced in runtime_entry.cc.
Changes in other sources are merely clean up and non-critical.

Change-Id: I7967950c1ad008b50e8691d59f4a9d5cd1c9f885
Reviewed-on: https://dart-review.googlesource.com/3761
Reviewed-by: Ryan Macnak <rmacnak@google.com>
2017-09-06 23:27:36 +00:00
Vyacheslav Egorov 8a179fb953 [VM, Compiler] Move compiler to a separate folder.
New folder structure (nested under vm/):

- compiler/
-   jit/         - JIT specific code
-   aot/         - AOT specific code
-   backend/     - all middle-end and back-end code (IL, flow graph)
-   assembler/   - assemblers and disassemblers
-   frontend/    - front ends (AST -> IL, Kernel -> IL)

compiler/README.md would be the documentation root for the compiler
pipeline

Bug: https://github.com/dart-lang/sdk/issues/30575
Change-Id: I2dfd9688793bff737f7632ddc77fca766875ce36
Reviewed-on: https://dart-review.googlesource.com/2940
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
Commit-Queue: Vyacheslav Egorov <vegorov@google.com>
2017-09-04 15:15:18 +00:00