Ryan Macnak
2a96956cd3
Roll Clang to 3928edecfbd116d56bbe7411365d50bb567380a1.
...
Re-run clang-format.
TEST=ci
Change-Id: If40a619e32a17ae95c5ee39e36ef0effd07e90b3
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/385363
Reviewed-by: Brian Quinlan <bquinlan@google.com >
Commit-Queue: Ryan Macnak <rmacnak@google.com >
2024-09-23 23:36:48 +00:00
Ryan Macnak
2d0e514583
Update clang to 0f61051f541a5b8cfce25c84262dfdbadb9ca688.
...
Account for new -Werror,-Wcast-function-type-mismatch.
Re-run clang-format.
TEST=ci
Change-Id: I70d30548cf2e2f86b3d654962f0e73561b6e6de2
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/363722
Reviewed-by: Alexander Aprelev <aam@google.com >
Commit-Queue: Ryan Macnak <rmacnak@google.com >
2024-04-19 19:46:47 +00:00
Liam Appelbe
d6931e618e
[vm] Make x86 disassembler able to handle invalid input
...
Arm, arm64, and riscv disassemblers already pass the new test.
Change-Id: Iaeb84d8db007d35225f77505503ca7614f82fb77
TEST=Disassembler_InvalidInput
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/303560
Reviewed-by: Daco Harkes <dacoharkes@google.com >
Commit-Queue: Daco Harkes <dacoharkes@google.com >
Auto-Submit: Liam Appelbe <liama@google.com >
2023-05-16 06:31:21 +00:00
Ryan Macnak
5941defa81
[vm] Update to constexpr in runtime/vm/compiler.
...
TEST=build
Change-Id: Idf0a05cf8c27164834b5d8464b230cd334a06835
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/293082
Reviewed-by: Alexander Markov <alexmarkov@google.com >
Commit-Queue: Ryan Macnak <rmacnak@google.com >
2023-04-11 21:50:56 +00:00
Ryan Macnak
de2abc6091
[vm] Update NULL to nullptr in runtime/vm/compiler.
...
TEST=build
Change-Id: I54cd75bbc942e11c4d719edcc64640da67077634
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/291965
Reviewed-by: Alexander Markov <alexmarkov@google.com >
Commit-Queue: Ryan Macnak <rmacnak@google.com >
2023-03-30 18:23:53 +00:00
Josh Soref
1aeece5e31
Spelling runtime vm compiler
...
Closes https://github.com/dart-lang/sdk/pull/50784
Co-authored-by: Josh Soref 2119212+jsoref@users.noreply.github.com
TEST=ci
GitOrigin-RevId: dbb20e7ee532a3490e86a633b5164ebab54bd38d
Change-Id: I9bd29543c4417efd4f338ff1c0e45c4ddbcc044d
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/276622
Reviewed-by: Alexander Markov <alexmarkov@google.com >
Reviewed-by: Erik Ernst <eernst@google.com >
Commit-Queue: Alexander Markov <alexmarkov@google.com >
2022-12-20 17:01:52 +00:00
Ryan Macnak
068d88b0d0
[vm, compiler] Emit constant-width addresses in IA32 disassembly for the absolute addressing mode.
...
TEST=ci
Change-Id: I1a3f6a4064ecc6d93e9cb21055d43e9cb698eea5
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/248721
Commit-Queue: Ryan Macnak <rmacnak@google.com >
Reviewed-by: Alexander Aprelev <aam@google.com >
2022-06-16 16:03:19 +00:00
Michael Richards
d635322b3d
Added byte registers to the x86-64 disassembler
...
TEST=CI
Bug: 48656
Change-Id: I099e25d66e62094d471bebed88b8b4bad1df6c2c
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/247463
Reviewed-by: Siva Annamalai <asiva@google.com >
Commit-Queue: Michael Richards <msrichards@google.com >
Reviewed-by: Ryan Macnak <rmacnak@google.com >
2022-06-08 22:57:03 +00:00
Ryan Macnak
45d02ac8f6
[test] Disassemble relative instead of blanking large literals and branch targets.
...
TEST=ci
Change-Id: I8cf48e2788d09d93b737a872433f2e894ba940bb
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/222782
Reviewed-by: Alexander Markov <alexmarkov@google.com >
Commit-Queue: Ryan Macnak <rmacnak@google.com >
2021-12-10 00:59:09 +00:00
Ryan Macnak
e5bc0f0b86
[vm] Make various arrays const.
...
TEST=build
Change-Id: I8d3445b87caa979472c9a37df62507f152a4aefb
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/203202
Commit-Queue: Ryan Macnak <rmacnak@google.com >
Reviewed-by: Alexander Markov <alexmarkov@google.com >
2021-06-14 20:45:18 +00:00
Drew Fisher
99f2b893b9
[disassembler] Perform comparison, not assignment
...
This assignment appears to have the intention of performing a comparison
and asserting that the opcode encountered was as expected, rather than
assigning it to be that particular opcode.
Change-Id: I21f3c00f414d4b191f85e9dcf4391a6dd7023495
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/157105
Auto-Submit: Drew Fisher <zarvox@google.com >
Reviewed-by: Aske Simon Christensen <askesc@google.com >
Commit-Queue: Aske Simon Christensen <askesc@google.com >
2020-08-05 08:50:38 +00:00
Aske Simon Christensen
e35ca30ca5
Reland "[vm] MemoryCopy instruction for copying between typed data and strings."
...
This is a reland of 6ecd8a10ea
Original change's description:
> [vm] MemoryCopy instruction for copying between typed data and strings.
>
> Used for copying the bytes from the Uint8List to the _OneByteString in
> String.fromCharCodes and the pure-ASCII case of UTF-8 decoding.
>
> Issue https://github.com/dart-lang/sdk/issues/42072
> Closes https://github.com/dart-lang/sdk/issues/41703
>
> Change-Id: I1ae300222877d1c6e64e32c2f40b8fb187a584c0
> Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/149500
> Commit-Queue: Aske Simon Christensen <askesc@google.com >
> Reviewed-by: Martin Kustermann <kustermann@google.com >
Change-Id: Ia231c521e5f2db168cfc6094dfc7322327dedc6d
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/150925
Reviewed-by: Martin Kustermann <kustermann@google.com >
Commit-Queue: Aske Simon Christensen <askesc@google.com >
2020-06-11 12:29:19 +00:00
Ryan Macnak
d1b0713e8b
Revert "[vm] MemoryCopy instruction for copying between typed data and strings."
...
This reverts commit 6ecd8a10ea .
Reason for revert: Breaks ABI
Original change's description:
> [vm] MemoryCopy instruction for copying between typed data and strings.
>
> Used for copying the bytes from the Uint8List to the _OneByteString in
> String.fromCharCodes and the pure-ASCII case of UTF-8 decoding.
>
> Issue https://github.com/dart-lang/sdk/issues/42072
> Closes https://github.com/dart-lang/sdk/issues/41703
>
> Change-Id: I1ae300222877d1c6e64e32c2f40b8fb187a584c0
> Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/149500
> Commit-Queue: Aske Simon Christensen <askesc@google.com >
> Reviewed-by: Martin Kustermann <kustermann@google.com >
TBR=kustermann@google.com ,askesc@google.com
Change-Id: I5fc0b58da80dca23c91b57ec2833492e9d0885a8
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/150802
Reviewed-by: Ryan Macnak <rmacnak@google.com >
Commit-Queue: Ryan Macnak <rmacnak@google.com >
2020-06-10 18:41:55 +00:00
Aske Simon Christensen
6ecd8a10ea
[vm] MemoryCopy instruction for copying between typed data and strings.
...
Used for copying the bytes from the Uint8List to the _OneByteString in
String.fromCharCodes and the pure-ASCII case of UTF-8 decoding.
Issue https://github.com/dart-lang/sdk/issues/42072
Closes https://github.com/dart-lang/sdk/issues/41703
Change-Id: I1ae300222877d1c6e64e32c2f40b8fb187a584c0
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/149500
Commit-Queue: Aske Simon Christensen <askesc@google.com >
Reviewed-by: Martin Kustermann <kustermann@google.com >
2020-06-10 14:40:17 +00:00
Aske Simon Christensen
cf6f8903a5
[vm] IL instruction for UTF-8 scan.
...
Speeds up decoding across the board, with medium-length pure ASCII
strings seeing about 2x on X64 and IA32.
Closes https://github.com/dart-lang/sdk/issues/41702
Change-Id: I1c8e0bc69baaaeb6755d4c775e6fa0e6d18e1c57
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/148762
Commit-Queue: Aske Simon Christensen <askesc@google.com >
Reviewed-by: Martin Kustermann <kustermann@google.com >
2020-06-08 15:03:34 +00:00
Ryan Macnak
2707880f1b
[vm] Fix various UBSan failures.
...
Bug: https://github.com/dart-lang/sdk/issues/39427
Change-Id: I74e0eee623d88005fb2893d03e284a87daa09260
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/146696
Reviewed-by: Alexander Markov <alexmarkov@google.com >
Commit-Queue: Ryan Macnak <rmacnak@google.com >
2020-05-07 19:40:18 +00:00
Ryan Macnak
6fe15f6df9
[vm] Represent tagged pointers as C++ value types instead of C++ pointer types.
...
This works around bugs in UndefinedBehaviorSanitizer and Clang.
Bug: b/28638298
Change-Id: I6be595f9664516019d28017d24559583a1ae3a21
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/144354
Commit-Queue: Ryan Macnak <rmacnak@google.com >
Reviewed-by: Vyacheslav Egorov <vegorov@google.com >
2020-04-25 05:21:27 +00:00
Vyacheslav Egorov
a41a1dc917
[vm/compiler] Split compiler sources out of normal VM sources.
...
Make them form its own source set (libdart_compiler) and completely exclude
them from AOT runtime targets.
Previously we had some inconsistencies, with some files were using
DART_PRECOMPILED_RUNTIME to fully or partially exclude either contents
from their headers or from implementation, while other files did nothing
and relied on linker to throw their contents away.
This change tries to address this inconsistency.
A follow up change would include a check in most compiler headers which
would prohibit to use them while building AOT runtime.
Change-Id: Ief11b11cbc518b301d3e93fce80580a31bbad151
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/142993
Reviewed-by: Alexander Markov <alexmarkov@google.com >
Reviewed-by: Martin Kustermann <kustermann@google.com >
2020-04-16 22:59:03 +00:00
Aart Bik
0ad30fafc1
[vm/assembler] Added cpufeatures, added LZCNT (IA32/X64)
...
Rationale:
We are adding library support for bit operations:
lowZeroBitCount/highZeroBitCount/nonZeroBitCount
The added features will enable very efficient direct
native implementations of these operations in the
DartVM codegen.
https://github.com/dart-lang/sdk/issues/38346
Change-Id: Id734a7590666c6abdc2a683a240094c6bf6cd46a
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/117768
Reviewed-by: Ryan Macnak <rmacnak@google.com >
Commit-Queue: Aart Bik <ajcbik@google.com >
2019-09-18 19:47:29 +00:00
Aart Bik
fc4021b68d
[vm/assembler] add support for bsf, bsr, popcnt (IA32/X64)
...
Rationale:
We are adding library support for bit operations:
lowZeroBitCount/highZeroBitCount/nonZeroBitCount
The added instructions for IA32 and X64 will enable
very efficient direct native implementations of
these operations in the DartVM codegen.
https://github.com/dart-lang/sdk/issues/38346
Change-Id: I04da6138eed45eb7b21cc310594c5c7ba7942750
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/117585
Reviewed-by: Ryan Macnak <rmacnak@google.com >
Commit-Queue: Aart Bik <ajcbik@google.com >
2019-09-17 21:12:11 +00:00
Martin Kustermann
a64b06ec83
[gardening] Migrate most files to be implicit-bool-conversion free
...
Issue https://dart-review.googlesource.com/c/sdk/+/115701
Change-Id: Ib579f0bbc8d694aec74afd837217316a10baf910
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/115707
Commit-Queue: Martin Kustermann <kustermann@google.com >
Reviewed-by: Ryan Macnak <rmacnak@google.com >
Reviewed-by: Daco Harkes <dacoharkes@google.com >
2019-09-05 21:41:42 +00:00
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
Daco Harkes
462e03d01e
Reland "[vm] Refactor Location to use either dart::Register or dart::host::Register"
...
Refactoring motivation: go/dart-simulated-ffi
* template Location and PairLocation with <dart::Register, dart::FpuRegister> or <dart::host::Register, dart::host::FpuRegister>
* move RegisterName and FpuRegisterName from assembler to constants
* move methods that are only implemented by Location and not HostLocation out of Location
Change-Id: Ie9aa2dae63380da0cbfb15eacc440537fbed48f8
Cq-Include-Trybots: luci.dart.try:vm-kernel-precomp-bare-linux-release-simarm-try, vm-kernel-precomp-bare-linux-release-simarm64-try, vm-kernel-precomp-linux-debug-x64-try, vm-kernel-linux-debug-simdbc64-try, vm-kernel-precomp-win-release-simarm64-try
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/98845
Commit-Queue: Daco Harkes <dacoharkes@google.com >
Reviewed-by: Vyacheslav Egorov <vegorov@google.com >
Auto-Submit: Daco Harkes <dacoharkes@google.com >
2019-04-11 10:09:23 +00:00
Daco Harkes
8e0a669e74
Revert "[vm] Refactor Location to use either dart::Register or dart::host::Register"
...
This reverts commit 60b3643e8e .
Reason for revert: Broke Windows+simulator builds. (Template instantiation checks are different on Windows than on Linux/MacOS)
Original change's description:
> [vm] Refactor Location to use either dart::Register or dart::host::Register
>
> Refactoring motivation: go/dart-simulated-ffi
>
> * template Location and PairLocation with <dart::Register, dart::FpuRegister> or <dart::host::Register, dart::host::FpuRegister>
> * move RegisterName and FpuRegisterName from assembler to constants
>
> Change-Id: I266b97ef1f0493c184f4486c7a0482845d4ac644
> Cq-Include-Trybots: luci.dart.try:vm-kernel-precomp-bare-linux-release-simarm-try, vm-kernel-precomp-bare-linux-release-simarm64-try, vm-kernel-precomp-linux-debug-x64-try, vm-kernel-linux-debug-simdbc64-try
> Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/97312
> Commit-Queue: Daco Harkes <dacoharkes@google.com >
> Reviewed-by: Vyacheslav Egorov <vegorov@google.com >
> Reviewed-by: Samir Jindel <sjindel@google.com >
TBR=vegorov@google.com ,sjindel@google.com ,dacoharkes@google.com
Change-Id: I8b4721e3ddbe1d32c3b553555064868bce5ea089
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Cq-Include-Trybots: luci.dart.try:vm-kernel-precomp-bare-linux-release-simarm-try, vm-kernel-precomp-bare-linux-release-simarm64-try, vm-kernel-precomp-linux-debug-x64-try, vm-kernel-linux-debug-simdbc64-try
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/98843
Reviewed-by: Daco Harkes <dacoharkes@google.com >
Commit-Queue: Daco Harkes <dacoharkes@google.com >
2019-04-08 10:28:12 +00:00
Daco Harkes
60b3643e8e
[vm] Refactor Location to use either dart::Register or dart::host::Register
...
Refactoring motivation: go/dart-simulated-ffi
* template Location and PairLocation with <dart::Register, dart::FpuRegister> or <dart::host::Register, dart::host::FpuRegister>
* move RegisterName and FpuRegisterName from assembler to constants
Change-Id: I266b97ef1f0493c184f4486c7a0482845d4ac644
Cq-Include-Trybots: luci.dart.try:vm-kernel-precomp-bare-linux-release-simarm-try, vm-kernel-precomp-bare-linux-release-simarm64-try, vm-kernel-precomp-linux-debug-x64-try, vm-kernel-linux-debug-simdbc64-try
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/97312
Commit-Queue: Daco Harkes <dacoharkes@google.com >
Reviewed-by: Vyacheslav Egorov <vegorov@google.com >
Reviewed-by: Samir Jindel <sjindel@google.com >
2019-04-08 09:45:27 +00:00
Dan Field
eb73f132c1
[vm] Add macro for fallthrough annotations
...
Internal builds in Google are catching this as an error.
I'm guarding it because I assume we might support building using other
compilers.
Change-Id: I665099cace9c6a40d737c471dd1b0fdb326fea39
Reviewed-on: https://dart-review.googlesource.com/c/91162
Commit-Queue: Siva Annamalai <asiva@google.com >
Reviewed-by: Siva Annamalai <asiva@google.com >
2019-02-15 01:12:01 +00:00
Vyacheslav Egorov
f496e538f4
[vm] Decouple assemblers from runtime.
...
This is the next step towards preventing compiler from directly peeking
into runtime and instead interact with runtime through a well defined
surface. The goal of the refactoring to locate all places where compiler
accesses some runtime information and partion those accesses into two
categories:
- creating objects in the host runtime (e.g. allocating strings, numbers, etc)
during compilation;
- accessing properties of the target runtime (e.g. offsets of fields) to
embed those into the generated code;
This change introduces dart::compiler and dart::compiler::target namespaces.
All code in the compiler will gradually be moved into dart::compiler namespace.
One of the motivations for this change is to be able to prevent access to
globally defined host constants like kWordSize by shadowing them in the
dart::compiler namespace.
The nested namespace dart::compiler::target hosts all information about
target runtime that compiler could access, e.g. compiler::target::kWordSize
defines word size of the target which will eventually be made different
from the host kWordSize (defined by dart::kWordSize).
The API for compiler to runtime interaction is placed into compiler_api.h.
Note that we still permit runtime to access compiler internals directly -
this is not going to be decoupled as part of this work.
Issue https://github.com/dart-lang/sdk/issues/31709
Change-Id: If4396d295879391becfa6c38d4802bbff81f5b20
Reviewed-on: https://dart-review.googlesource.com/c/90242
Commit-Queue: Vyacheslav Egorov <vegorov@google.com >
Reviewed-by: Martin Kustermann <kustermann@google.com >
2019-01-25 16:45:13 +00:00
Martin Kustermann
a01513c685
[VM] Allow including disassembler in product mode if FORCE_INCLUDE_DISASSEMBLER is defined
...
This helps VM developers working with product mode.
Issue https://github.com/dart-lang/sdk/issues/33274
Change-Id: I1933dea6f2d88c4745c63be772cfe301259f4a9c
Reviewed-on: https://dart-review.googlesource.com/c/82583
Reviewed-by: Vyacheslav Egorov <vegorov@google.com >
Commit-Queue: Martin Kustermann <kustermann@google.com >
2018-11-02 13:02:25 +00:00
Vyacheslav Egorov
c9bcfe877b
[vm] Fix byte displacement printing in x86 disassembler
...
Use int8_t type instead of char - which does not have a defined signedness.
Change-Id: I14d43419d3e59cea71fb27f15bb1f72e450baca6
Reviewed-on: https://dart-review.googlesource.com/76563
Reviewed-by: Ryan Macnak <rmacnak@google.com >
Reviewed-by: Aart Bik <ajcbik@google.com >
Commit-Queue: Vyacheslav Egorov <vegorov@google.com >
2018-09-25 22:42:36 +00:00
Ryan Macnak
8da46d35f5
[vm] Move heap-related code to its own subdirectory (cf. compiler).
...
Remove some dead includes.
Change-Id: I31f3e739e5ee46dcbba5d6a2f091491b46402943
Reviewed-on: https://dart-review.googlesource.com/60146
Reviewed-by: Zach Anderson <zra@google.com >
Commit-Queue: Ryan Macnak <rmacnak@google.com >
2018-06-20 00:39:49 +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
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
Ryan Macnak
558a931409
[vm] Move some string utils from runtime/vm to runtime/platform.
...
Change-Id: I552086445a7e07792f9da85afa5edf23b6c450d5
Reviewed-on: https://dart-review.googlesource.com/44402
Reviewed-by: Siva Annamalai <asiva@google.com >
Commit-Queue: Ryan Macnak <rmacnak@google.com >
2018-03-01 02:07:46 +00:00
Erik Corry
1dec18e2cf
[VM] Make x64 assembler more regular
...
Apart from removing almost 1000 lines of very repetitive code, the idea here is
to change the assembler from a huge pile of arbitrary code into something that
can be used to generate tables of opcodes and their structure. Later, I'd like to
use this to make the disassembler more table driven and less arbitrary, and
perhaps build an x86 simulator in the same vein as the ARM simulator, which
would help me debug (I find the ARM simulator very useful when making low level
changes to the VM and miss its functionality on x86).
R=vegorov@google.com
Bug:
Change-Id: I1ae2c1696f88b67862843c9ac05c827a7c9b9a6e
Reviewed-on: https://dart-review.googlesource.com/25241
Commit-Queue: Erik Corry <erikcorry@google.com >
Reviewed-by: Vyacheslav Egorov <vegorov@google.com >
2017-12-12 14:14:45 +00:00
Erik Corry
1d9ff70a08
[VM] Pick more compact instruction encodings on x64
...
Several tricks here:
* When zeroing registers we can use xorl instead of xorq because the 'l'
variant will zero the top bits.
* test and 'and' instructions with immediate arguments can use 8-bit and 32 bit
variants more heavily.
* mov reg, immediate can use more compact encodings when sign-extension is not
needed.
Performance is better than +1% when measured on Dart2JS.
R=vegorov@google.com
Intel optimization manual says: "Assembly/Compiler Coding Rule 64. (H impact, M
generality) Use the 32-bit versions of instructions in 64-bit mode to reduce
code size unless the 64-bit version is necessary to access 64-bit data or
additional registers."
Bug:
Change-Id: I2a989315c45f8d8ebab719653fbfa2b18ebb77c9
Reviewed-on: https://dart-review.googlesource.com/23400
Commit-Queue: Erik Corry <erikcorry@google.com >
Reviewed-by: Vyacheslav Egorov <vegorov@google.com >
2017-11-24 10:53:17 +00:00
Erik Corry
d300b08e35
[VM] Use X64 disassembler for IA32 and X64 (reland)
...
R=vegorov@google.com
This removes the IA32 disassembler and uses the X64 disassembler for
both variants. Instructions that were in the IA32 assembler, but not
supported by the X64 disassembler have been added. It also adds some
regression tests for a lot of the disassembler output.
Bug:
Change-Id: I243abbb04c3a77810ce96ca74f7f42a5a1aea0cf
Reviewed-on: https://dart-review.googlesource.com/22982
Reviewed-by: Vyacheslav Egorov <vegorov@google.com >
Commit-Queue: Erik Corry <erikcorry@google.com >
2017-11-22 12:04:18 +00:00
Erik Corry
80992a5a09
Revert "[VM] Use X64 disassembler for IA32 and X64"
...
This reverts commit 9e42f006d9 .
due to test failures on non-Linux platforms.
R=karlklose@google.com
Bug:
Change-Id: I5dc40da75d8d89fca8fce98a69a39d767493af1b
Reviewed-on: https://dart-review.googlesource.com/22921
Reviewed-by: Karl Klose <karlklose@google.com >
2017-11-22 09:11:12 +00:00
Erik Corry
9e42f006d9
[VM] Use X64 disassembler for IA32 and X64
...
R=vegorov@google.com
Bug:
Change-Id: I19b1f58e16ea35dc81b941c54e6e57b97cad3d74
Reviewed-on: https://dart-review.googlesource.com/22020
Commit-Queue: Erik Corry <erikcorry@google.com >
Reviewed-by: Vyacheslav Egorov <vegorov@google.com >
2017-11-22 08:01:07 +00:00