Commit Graph

19 Commits

Author SHA1 Message Date
Vyacheslav Egorov a06b1d96cb Revert "[VM] Reduce Smi size to 32 bit on 64 bit platforms"
This reverts commit cf78da8a48.

Reason for revert: introduces significant performance regression (~30%) on analyzer benchmarks (warm-analysis) without clearly visible hot-spot.

Original change's description:
> [VM] Reduce Smi size to 32 bit on 64 bit platforms
> 
> This reduces small tagged integers on 64 bit platforms from 63 bits to
> 31 bits plus one tag bit.
> This is a step on the way to compile-time-optional compressed pointers
> on 64 bit platforms.  See more about this at go/dartvmlearnings
> This causes a slowdown for some uses of integers that don't fit in 31
> signed bits, but because both x64 and ARM64 have unboxed 64 bit
> integers now the performance hit should not be too bad.
> 
> This is a reapplication of
> https://dart-review.googlesource.com/c/sdk/+/46244
> It was reverted due to a compilation error on 32 bit
> ARM with DBC.
> 
> R=​vegorov@google.com
> 
> Change-Id: I943de1768519457f0e5a61ef0b4ef204b6a53281
> Reviewed-on: https://dart-review.googlesource.com/51321
> Reviewed-by: Vyacheslav Egorov <vegorov@google.com>

TBR=vegorov@google.com,erikcorry@google.com

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

Change-Id: I8c5b909ec38663b5f5b05f69ef488c97341f8f3d
Reviewed-on: https://dart-review.googlesource.com/54000
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
Commit-Queue: Vyacheslav Egorov <vegorov@google.com>
2018-05-07 13:56:10 +00:00
Erik Corry cf78da8a48 [VM] Reduce Smi size to 32 bit on 64 bit platforms
This reduces small tagged integers on 64 bit platforms from 63 bits to
31 bits plus one tag bit.
This is a step on the way to compile-time-optional compressed pointers
on 64 bit platforms.  See more about this at go/dartvmlearnings
This causes a slowdown for some uses of integers that don't fit in 31
signed bits, but because both x64 and ARM64 have unboxed 64 bit
integers now the performance hit should not be too bad.

This is a reapplication of
https://dart-review.googlesource.com/c/sdk/+/46244
It was reverted due to a compilation error on 32 bit
ARM with DBC.

R=vegorov@google.com

Change-Id: I943de1768519457f0e5a61ef0b4ef204b6a53281
Reviewed-on: https://dart-review.googlesource.com/51321
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
2018-04-25 12:31:33 +00:00
Alexander Aprelev 23ae4fa098 Revert "[VM] Reduce Smi size to 32 bit on 64 bit platforms"
This reverts commit 0e9a77a360 as it introduces regression in Flutter build: https://build.chromium.org/p/client.flutter/builders/Mac%20Engine/builds/2573/steps/build%20ios_debug_arm/logs/stdio

Revert d58b0e2d44

Change-Id: I1c4a9384d4fa8cc809412b1d22409221771acda0
Reviewed-on: https://dart-review.googlesource.com/50600
Reviewed-by: Alexander Markov <alexmarkov@google.com>
Commit-Queue: Alexander Aprelev <aam@google.com>
2018-04-10 23:39:01 +00:00
Erik Corry 0e9a77a360 [VM] Reduce Smi size to 32 bit on 64 bit platforms
This reduces small tagged integers on 64 bit platforms from 63 bits to
31 bits plus one tag bit.
This is a step on the way to compile-time-optional compressed pointers
on 64 bit platforms.  See more about this at go/dartvmlearnings
This causes a slowdown for some uses of integers that don't fit in 31
signed bits, but because both x64 and ARM64 have unboxed 64 bit
integers now the performance hit should not be too bad.

This reapplies the change reviewed at
https://dart-review.googlesource.com/c/sdk/+/46244

R=kustermann@google.com

Change-Id: I605c21506ec7d4c69fa7049bc419b3ee370685fc
Reviewed-on: https://dart-review.googlesource.com/50202
Reviewed-by: Martin Kustermann <kustermann@google.com>
Commit-Queue: Erik Corry <erikcorry@google.com>
2018-04-09 12:45:57 +00:00
Erik Corry b7ade14add Revert "[VM] Reduce Smi size to 32 bit on 64 bit platforms."
This reverts commit 19b4349487.
Reason for revert: Failure on VM test with -hot-reload-test-mode

R=kustermann@google.com

Change-Id: I1c40b537be8c934b1ff34465bca0a35c1376ab71
Reviewed-on: https://dart-review.googlesource.com/49862
Reviewed-by: Martin Kustermann <kustermann@google.com>
2018-04-06 12:01:58 +00:00
Erik Corry 19b4349487 [VM] Reduce Smi size to 32 bit on 64 bit platforms.
This reduces small tagged integers on 64 bit platforms from 63 bits to 31 bits
plus one tag bit.
This is a step on the way to compile-time-optional compressed pointers on 64
bit platforms.  See more about this at go/dartvmlearnings
This causes a slowdown for some uses of integers that don't fit in 31 signed
bits, but because both x64 and ARM64 have unboxed 64 bit integers now the
performance hit should not be too bad.

R=kustermann@google.com

Change-Id: I035ed84c29b64f0432cd2d24193eb1c6303c14b0
Reviewed-on: https://dart-review.googlesource.com/46244
Commit-Queue: Erik Corry <erikcorry@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
2018-04-06 10:07:53 +00:00
Erik Corry 65776fdc3e [VM] ARM64: Fix tbz instruction for bit positions >= 32
R=kustermann@google.com

Change-Id: I03f42ee44a37da7e064f79db18a7f45fa25ee010
Reviewed-on: https://dart-review.googlesource.com/46063
Reviewed-by: Martin Kustermann <kustermann@google.com>
2018-03-13 09:31:50 +00:00
Erik Corry 235e62264e [VM] Reland Support some 32bit instructions in 64bit assemblers.
These instructions will soon be used for for smaller (32 bit) Smis.
Also fix broken ubfiz instruction in ARM64 assembler.

This reland fixes the disassembler test that used Stop
instructions which disassemble differently on Mac
because constants have higher addresses.

Originally reviewed at
https://dart-review.googlesource.com/c/sdk/+/43668

Fix assembler test on Mac

R=kustermann@google.com

Change-Id: I61f8626184af495f18a74b5fef07bad02b6615e9
Reviewed-on: https://dart-review.googlesource.com/45240
Reviewed-by: Martin Kustermann <kustermann@google.com>
Commit-Queue: Erik Corry <erikcorry@google.com>
2018-03-06 10:50:21 +00:00
Erik Corry 3ac86d759e Revert "[VM] Support some 32bit instructions in 64bit assemblers."
This reverts commit a5f173f165.

Reason for revert: Some test failures.

Original change's description:
> [VM] Support some 32bit instructions in 64bit assemblers.
> 
> These instructions will soon be used for for smaller (32 bit) Smis.
> 
> Also fix broken ubfiz instruction in ARM64 assembler.
> 
> R=​kustermann@google.com
> 
> Change-Id: I9068a1c4281047dbd7c1c447fc32ac0e92c89e9d
> Reviewed-on: https://dart-review.googlesource.com/43668
> Reviewed-by: Martin Kustermann <kustermann@google.com>
> Reviewed-by: Vyacheslav Egorov <vegorov@google.com>

TBR=vegorov@google.com,kustermann@google.com,erikcorry@google.com

Change-Id: I0991712936d903f2cb1f3851c919ed6171a96711
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://dart-review.googlesource.com/44981
Reviewed-by: Erik Corry <erikcorry@google.com>
Commit-Queue: Erik Corry <erikcorry@google.com>
2018-03-05 15:29:56 +00:00
Erik Corry a5f173f165 [VM] Support some 32bit instructions in 64bit assemblers.
These instructions will soon be used for for smaller (32 bit) Smis.

Also fix broken ubfiz instruction in ARM64 assembler.

R=kustermann@google.com

Change-Id: I9068a1c4281047dbd7c1c447fc32ac0e92c89e9d
Reviewed-on: https://dart-review.googlesource.com/43668
Reviewed-by: Martin Kustermann <kustermann@google.com>
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
2018-03-05 14:45:23 +00:00
Erik Corry 619656b9c8 [VM] Fix far branches on ARM64 and add tests
R=rmacnak@google.com

Change-Id: I089d12bced44576a8a19e29bad94b1256f320f5f
Reviewed-on: https://dart-review.googlesource.com/38720
Reviewed-by: Ryan Macnak <rmacnak@google.com>
2018-02-06 08:21:32 +00:00
Erik Corry 5253b7ed24 [VM] Fix ARM64 test to clear register before use
R=vegorov@google.com

Bug:
Change-Id: Ia223f98fa6e87f915b519738d47677837c911309
Reviewed-on: https://dart-review.googlesource.com/23100
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
Commit-Queue: Erik Corry <erikcorry@google.com>
2017-11-22 16:03:44 +00:00
Ryan Macnak 5b9558228d Reapply "[vm, arm64] Add assembler support for tbz and use it for BranchIfSmi."
Skip addition of far branch support to the test harness.

Change-Id: Idec3a644e0dc4165bfaa8daa948f1aee172c1eea
Reviewed-on: https://dart-review.googlesource.com/22740
Reviewed-by: Zach Anderson <zra@google.com>
2017-11-21 23:38:05 +00:00
Ryan Macnak 9bdc803d11 [vm, arm64] Don't access beyond CSP in assembler tests.
Change-Id: I10adfd4aaaef170c74747a1dceb7dfb17bddb9b5
Reviewed-on: https://dart-review.googlesource.com/22662
Reviewed-by: Zach Anderson <zra@google.com>
2017-11-21 22:08:19 +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
Erik Corry 248d4468f4 [VM] Add csneg instruction on ARM64
R=rmacnak@google.com

I'll be needing this for some read barrier experiments.
Bug:
Change-Id: I18ac62a9a23a2bd285826e4247b8ee2819d5283b
Reviewed-on: https://dart-review.googlesource.com/20065
Commit-Queue: Erik Corry <erikcorry@google.com>
Reviewed-by: Ryan Macnak <rmacnak@google.com>
2017-11-12 20:34:14 +00:00
Ryan Macnak 0e552547a6 Revert "[vm, arm64] Add assembler support for tbz and use it for BranchIfSmi."
This reverts commit 64271895a9.

Reason for revert: Crashes in unchanged assembler tests

Original change's description:
> [vm, arm64] Add assembler support for tbz and use it for BranchIfSmi.
> 
> (Apparently we already had it implemented in the simulator and disassembler.)
> 
> MegaNeverOverridden (Odroid-C2)   -3.702% (-0.5 noise)
> BinaryTrees (Odroid-C2)           -3.296% (-0.4 noise)
> ...
> MegaEquality (Odroid-C2)           2.256% (0.4 noise)
> Splay (Odroid-C2)                  9.879% (0.6 noise)
> MegaOverriddenEvery2nd (Odroid-C2) 6.317% (0.7 noise)
> StringInterpolation (Odroid-C2)    19.07% (0.8 noise)
> ForInLoop (Odroid-C2)              4.902% (1.0 noise)
> 
> Flutter gallery iOS instructions:
> 12543904 -> 12504224 (-0.32%)
> 
> Change-Id: I23fa58e5589ddf5042a2075431bc53aa21723813
> Reviewed-on: https://dart-review.googlesource.com/17061
> Commit-Queue: Ryan Macnak <rmacnak@google.com>
> Reviewed-by: Régis Crelier <regis@google.com>
> Reviewed-by: Vyacheslav Egorov <vegorov@google.com>

TBR=vegorov@google.com,rmacnak@google.com,regis@google.com

Change-Id: I6d55907972a6f1485e2789a8623a557bcdfa7f22
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://dart-review.googlesource.com/20320
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2017-11-10 23:57:09 +00:00
Ryan Macnak 64271895a9 [vm, arm64] Add assembler support for tbz and use it for BranchIfSmi.
(Apparently we already had it implemented in the simulator and disassembler.)

MegaNeverOverridden (Odroid-C2)   -3.702% (-0.5 noise)
BinaryTrees (Odroid-C2)           -3.296% (-0.4 noise)
...
MegaEquality (Odroid-C2)           2.256% (0.4 noise)
Splay (Odroid-C2)                  9.879% (0.6 noise)
MegaOverriddenEvery2nd (Odroid-C2) 6.317% (0.7 noise)
StringInterpolation (Odroid-C2)    19.07% (0.8 noise)
ForInLoop (Odroid-C2)              4.902% (1.0 noise)

Flutter gallery iOS instructions:
12543904 -> 12504224 (-0.32%)

Change-Id: I23fa58e5589ddf5042a2075431bc53aa21723813
Reviewed-on: https://dart-review.googlesource.com/17061
Commit-Queue: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Régis Crelier <regis@google.com>
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
2017-11-10 21:35:48 +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