dart-sdk/runtime/vm/compiler
Johnni Winther f17cf33c6d [kernel] Move Pattern nodes to package:kernel
These AST nodes were so far internal to the CFE, but since we need to
move the pattern lowering to the constant evaluator we need to support them in the AST defined in package:kernel.

TEST=existing

Change-Id: Ie6c5f0f8ad75a866c5d965fdf506bc869ffaf654
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/288241
Reviewed-by: Chloe Stefantsova <cstefantsova@google.com>
Commit-Queue: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Alexander Markov <alexmarkov@google.com>
Reviewed-by: Joshua Litt <joshualitt@google.com>
2023-03-13 08:43:07 +00:00
..
aot [vm] Update to variadic FATAL. 2023-03-06 22:06:59 +00:00
api Fix typos 2022-07-12 19:35:22 +00:00
assembler [vm] Update to variadic FATAL. 2023-03-06 22:06:59 +00:00
backend [vm/compiler] Keep and propagate static types during local type propagation 2023-03-09 21:18:49 +00:00
ffi Spelling sdk 2023-01-20 12:37:49 +00:00
frontend [kernel] Move Pattern nodes to package:kernel 2023-03-13 08:43:07 +00:00
jit [vm] Update to variadic FATAL. 2023-03-06 22:06:59 +00:00
asm_intrinsifier.cc [vm] Factor StringEqual out of platform-specific intrinsifiers into single asm_intrinsifier. 2022-12-11 02:49:28 +00:00
asm_intrinsifier.h [vm] Factor StringEqual out of platform-specific intrinsifiers into single asm_intrinsifier. 2022-12-11 02:49:28 +00:00
asm_intrinsifier_arm.cc [vm] Factor StringEqual out of platform-specific intrinsifiers into single asm_intrinsifier. 2022-12-11 02:49:28 +00:00
asm_intrinsifier_arm64.cc [vm] Factor StringEqual out of platform-specific intrinsifiers into single asm_intrinsifier. 2022-12-11 02:49:28 +00:00
asm_intrinsifier_ia32.cc [vm] Factor StringEqual out of platform-specific intrinsifiers into single asm_intrinsifier. 2022-12-11 02:49:28 +00:00
asm_intrinsifier_riscv.cc [vm] Factor StringEqual out of platform-specific intrinsifiers into single asm_intrinsifier. 2022-12-11 02:49:28 +00:00
asm_intrinsifier_test.cc [vm] Refactor generation of identity hashes. 2021-12-13 22:31:46 +00:00
asm_intrinsifier_x64.cc [vm] Factor StringEqual out of platform-specific intrinsifiers into single asm_intrinsifier. 2022-12-11 02:49:28 +00:00
call_specializer.cc [vm/compiler] Rename PushArgument to MoveArgument 2023-02-20 14:57:57 +00:00
call_specializer.h [vm] Recognize unmodifiable typed data views. 2022-08-11 18:10:48 +00:00
cha.cc Spelling pkg analyzer lib 2023-01-25 14:08:27 +00:00
cha.h [vm, compiler] Discover the sole implementation of an interface when it is a different class than the interface. 2022-07-26 17:33:37 +00:00
cha_test.cc [vm/concurrency] Change references to class_table/object_store/heap from Isolate to IsolateGroup 2021-01-06 15:22:11 +00:00
compiler_pass.cc [vm/compiler] Rename PushArgument to MoveArgument 2023-02-20 14:57:57 +00:00
compiler_pass.h Fix typos 2022-07-12 19:35:22 +00:00
compiler_sources.gni [vm/compiler] Split ParallelMove codegen into scheduling and emission 2023-02-28 12:21:41 +00:00
compiler_state.cc [vm] Support multiple local variables with the same name in the same scope 2023-01-31 18:47:46 +00:00
compiler_state.h [vm] Include compiler state in crash reports. 2021-11-11 14:30:52 +00:00
compiler_timings.cc [vm/compiler] Add --print-precompiler-timings 2021-05-11 11:15:53 +00:00
compiler_timings.h [vm/compiler] Minor improvements for AOT compilation time 2021-09-13 21:25:30 +00:00
graph_intrinsifier.cc [vm] Update to variadic FATAL. 2023-03-06 22:06:59 +00:00
graph_intrinsifier.h [vm] Move implementation of dart:math intrinsics to flow graph builder 2021-08-27 17:42:27 +00:00
intrinsifier.cc [vm] Update to variadic FATAL. 2023-03-06 22:06:59 +00:00
intrinsifier.h Reland "[vm/concurrency] When generating Store/Load instructions use guard information that is kept on a slot." 2021-11-30 21:45:55 +00:00
method_recognizer.cc [vm] Avoid a second map lookup when dispatching isolate messages. 2023-02-27 18:08:25 +00:00
method_recognizer.h [vm/ffi] ABI-specific integers 2021-12-16 22:07:00 +00:00
offsets_extractor.cc [vm] Support RISC-V. 2022-01-20 00:57:57 +00:00
README.md
recognized_methods_list.h [vm] Avoid a second map lookup when dispatching isolate messages. 2023-02-27 18:08:25 +00:00
relocation.cc [vm, gc] Common page structure for both generations. 2022-09-27 21:34:05 +00:00
relocation.h [vm/compiler] Improve precision of AOT code relocator 2021-04-29 15:12:15 +00:00
relocation_test.cc [vm] Fix vm/cc/CodeRelocator tests 2023-02-28 21:49:33 +00:00
runtime_api.cc [vm] Update to variadic FATAL. 2023-03-06 22:06:59 +00:00
runtime_api.h [vm] Avoid a second map lookup when dispatching isolate messages. 2023-02-27 18:08:25 +00:00
runtime_offsets_extracted.h [vm] Avoid a second map lookup when dispatching isolate messages. 2023-02-27 18:08:25 +00:00
runtime_offsets_list.h [vm] Avoid a second map lookup when dispatching isolate messages. 2023-02-27 18:08:25 +00:00
stub_code_compiler.cc Spelling samples 2023-01-09 17:44:29 +00:00
stub_code_compiler.h [vm] Runtime type check in await 2022-12-07 22:46:22 +00:00
stub_code_compiler_arm.cc Spelling 2023-01-24 18:00:25 +00:00
stub_code_compiler_arm64.cc [vm, compiler] Use ARMv8.1 AMOs in the write barrier stub on Mac. 2023-02-27 22:26:36 +00:00
stub_code_compiler_ia32.cc Spelling 2023-01-24 18:00:25 +00:00
stub_code_compiler_riscv.cc [vm, compiler] Make more use of sh{1,2,3}add. 2023-02-24 20:33:08 +00:00
stub_code_compiler_x64.cc Spelling 2023-01-24 18:00:25 +00:00
write_barrier_elimination.cc [vm] Initial implementation of record type checks 2022-09-16 18:05:00 +00:00
write_barrier_elimination.h [vm/compiler] Add check to prevent inclusion of compiler headers into AOT runtime 2020-04-17 13:11:08 +00:00
write_barrier_elimination_test.cc [vm, compiler] Rename StoreInstanceFieldInstr to StoreFieldInstr to match LoadFieldInstr and GuardFieldXYZInstr. 2022-07-27 20:00:49 +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.