Files
sdk/runtime/vm/compiler
Alexander Markov 97369d0903 [vm/compiler] Correct representation of shift rhs and speculative mode of BinaryUint32OpInstr
Speculative and non-speculative shift instructions have different
representations of RHS input, so canonicalization of multiplication
into a shift should account for that.

Also, mark BinaryUint32Op instruction as always non-speculative -
it never needs to speculate  as it is inserted by range analysis
after it can prove that it is valid to perform Uint32 op.
This prevents insertion of a speculative shift instruction in AOT
when BinaryUint32Op multiplication is canonicalized.

Fixes https://github.com/dart-lang/sdk/issues/55003
TEST=vm/dart/regress_55003_test

Change-Id: Ib1805ce2dc0e6f514e6f3b4a09be08808e75048b
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/355820
Reviewed-by: Slava Egorov <vegorov@google.com>
Commit-Queue: Alexander Markov <alexmarkov@google.com>
2024-03-08 15:35:20 +00:00
..
2024-01-09 12:36:55 +00:00
2024-01-26 18:58:54 +00:00

Dart VM Compilation Pipeline

This folder contains Dart VM compilation pipeline.

Compilation pipeline is mainly responsible for converting AST or Kernel AST into IL flow graphs and then generating native code from IL.

It has the following structure:

Directory What goes there
assembler/ Assemblers and disassemblers
backend/ IL based compilation backend: optimization passes and architecture specific code generation rules
frontend/ Frontends responsible for converting AST into IL
jit/ JIT specific passes and compilation pipeline entry points
aot/ AOT specific passes and compilation pipeline entry points
. Shared code or code without clear designation.

Currently there are no layering restrictions and components from different subfolders can reference each other.