0d28233e96
This change fixes a bug in the IA32 FG Moves, where any moves of Int8 and Uint8 from a register other than the first four general purpose registers would be bogus. The moves would generate to move the second byte of the first four GP registers because the other four registers do not have byte registers. This change also fixes an issue where X64 byte register moves would generate incorrect bytecode for otherwise correct instruction prints. It would for instance print "movb [rsp],rdi", but emit "movb [rsp],bh". This change also fixes a bug in NativeFpuRegistersLocation::Equals that cause different FPU regs. to compare equal despite being different kinds. This in turn caused moves between these different regs. to be dropped because they looked like no-ops. See also: https://dart-review.googlesource.com/c/sdk/+/221624 TEST=Existing. Cq-Include-Trybots: luci.dart.try:vm-kernel-linux-debug-ia32-try,vm-kernel-nnbd-win-release-ia32-try Change-Id: I09e69295c8a522d74f8a8fd817188b4de656c619 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/237690 Reviewed-by: Daco Harkes <dacoharkes@google.com> Commit-Queue: Clement Skau <cskau@google.com>
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.