Commit Graph

9 Commits

Author SHA1 Message Date
Alexander Markov c3b5939965 [vm] Remove --limit-ints-to-64-bits option and old _Bigint class
Closes https://github.com/dart-lang/sdk/issues/33306

Change-Id: I7088d8b7143edbe24f5cefe4be037ad2006e0625
Reviewed-on: https://dart-review.googlesource.com/58101
Commit-Queue: Alexander Markov <alexmarkov@google.com>
Reviewed-by: Régis Crelier <regis@google.com>
Reviewed-by: Ryan Macnak <rmacnak@google.com>
2018-06-04 20:10:40 +00:00
Samir Jindel 7583fb882a [vm] Refactor state bits to free up two bits on Function.
This was pulled out of old revision by Slava.

Change-Id: I9fa276b0768f4aa908754fec8369b1272ec465be
Reviewed-on: https://dart-review.googlesource.com/56108
Commit-Queue: Samir Jindel <sjindel@google.com>
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
2018-05-23 13:59:25 +00:00
Erik Corry 2a2bb0901f [VM] Tighten range analysis in regexps
R=vegorov@google.com

Change-Id: I2cd0b777c958059dc661d13933fbe8d9f91599d4
Reviewed-on: https://dart-review.googlesource.com/50721
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
2018-04-11 14:37:23 +00:00
Vyacheslav Egorov 4fb15fcbf2 [vm/compiler] Consolidate compiler passes and share them between JIT and AOT.
Passes bodies are moved into compiler_pass{.cc,.h}.

Invoking a pass is just INVOKE_PASS(Name) now, instead of putting a bunch of
if-s and calls in compiler.cc or precompiler.cc.

We also consolidate ability to print IL and enable-disable passes under a
single flag --compiler-passes, e.g.

--compiler-passes=-Inlining,-CSE    disable inlining and CSE passes

--compiler-passes=Inlining+         print IL after Inlining pass and all
                                    subsequent passes

Change-Id: I90ff54b04a54f20099f5bf38dd45b16b8e3c4781
Reviewed-on: https://dart-review.googlesource.com/43968
Commit-Queue: Vyacheslav Egorov <vegorov@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
Reviewed-by: Alexander Markov <alexmarkov@google.com>
2018-03-01 16:43:58 +00:00
Alexander Markov 1a1c7693d2 [VM/compiler] Fix range analysis for 64-bit fixed-size integers
This CL corrects handling of overflows in range analysis to
account for wrap-around (which happens with new integer semantics).

* If there is an overflow while doing computations in range
  analysis, the resulting range is approximated as full int64 range.

* For symbolic range boundaries 'symbol + offset', offset is checked
  to stay within [kMinInt64 - kSmiMin, kMaxInt64 - kSmiMax] in order
  to guarantee that overflow doesn't occur.

Issue: https://github.com/dart-lang/sdk/issues/31920
Change-Id: I2c16adbe3597e9b718ed2f6ce7210426fcc9e6a6
Reviewed-on: https://dart-review.googlesource.com/39423
Commit-Queue: Alexander Markov <alexmarkov@google.com>
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
2018-02-08 21:49:42 +00:00
Alexander Markov d8f27c3841 [VM] Enable optimizations based on strong mode types
Strong mode types are queried from:

* Return types of interface targets of instance calls.
* Return types of static calls.
* Types of instance and static fields.
* Types of local variables (for initial types of phis).

The strong mode types are used to specialize int and double operations
and optimize 'is' checks.

https://github.com/dart-lang/sdk/issues/30480
Change-Id: I2302509f396eacfcab8ed41e3f50e8c74dd662fd
Reviewed-on: https://dart-review.googlesource.com/30386
Commit-Queue: Alexander Markov <alexmarkov@google.com>
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
2017-12-19 19:23:22 +00:00
Vyacheslav Egorov 9678113619 [VM] Fix incorrect range assignment for Uint32 ops.
When replacing 64bit signed operations with unsigned 32bit ones
IntegerInstructionSelector::Replace would simply copy 64bit operation's
range onto uint32 op. This however is only correct for positive range,
non-positive ranges must become [0, kMaxUint32]. 

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

Bug:
Change-Id: I896b7828c29fe8f04a844cfb984295cb47ddaaf2
Reviewed-on: https://dart-review.googlesource.com/8020
Commit-Queue: Vyacheslav Egorov <vegorov@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
2017-09-25 10:09:32 +00:00
Alexander Markov ffc85d1e92 [VM] Fix undefined behavior in Utils::Abs
Issue: https://github.com/dart-lang/sdk/issues/30572

Change-Id: If8c743edb140edb7a7f803521b51c776d41db5d6
Reviewed-on: https://dart-review.googlesource.com/5881
Reviewed-by: Zach Anderson <zra@google.com>
2017-09-14 18:15:17 +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