dart-sdk/runtime/vm/compiler
Régis Crelier c48263e901 Revert "[VM/nnbd] Canonicalize TypeParameter objects in the VM."
This reverts commit 6a98e2719e.

Reason for revert: Unexpected test failures

Original change's description:
> [VM/nnbd] Canonicalize TypeParameter objects in the VM.
> 
> Prior to this CL, type parameters were all assumed canonical, even duplicate ones.
> 
> Per a new convention introduced in this CL, the type parameter array in generic classes and generic functions contains canonical type parameters. As these type parameters get cloned with a different nullability, they are inserted in a new hash table of canonical type parameters.
> 
> This fixes performance issue https://github.com/dart-lang/sdk/issues/41421
> 
> Change-Id: I9086158fa6b6261e9997bb50edec6d7c54abbfa1
> Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/148223
> Commit-Queue: Régis Crelier <regis@google.com>
> Reviewed-by: Ryan Macnak <rmacnak@google.com>

TBR=rmacnak@google.com,alexmarkov@google.com,asiva@google.com,regis@google.com

Change-Id: I0ca3b6b66e2281c285eba6b564f78c0e6b2f2217
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/150265
Reviewed-by: Régis Crelier <regis@google.com>
Commit-Queue: Régis Crelier <regis@google.com>
2020-06-05 23:36:45 +00:00
..
aot Revert "[VM/nnbd] Canonicalize TypeParameter objects in the VM." 2020-06-05 23:36:45 +00:00
api [vm/compiler] Split compiler sources out of normal VM sources. 2020-04-16 22:59:03 +00:00
assembler [vm/concurrency] Move locks up from Isolate to IsolateGroup 2020-05-27 17:04:30 +00:00
backend [VM/runtime] Introduce a trail in IsSubtypeOf() to avoid cycles. 2020-06-05 19:57:46 +00:00
ffi [vm/ffi] Fix issue due to unspecified argument evaluation order in C++ 2020-06-04 10:46:11 +00:00
frontend Revert "[VM/nnbd] Canonicalize TypeParameter objects in the VM." 2020-06-05 23:36:45 +00:00
jit [vm/compiler] Include linear scan tracing code in release builds 2020-05-11 20:24:49 +00:00
asm_intrinsifier.cc [vm/compiler] Add check to prevent inclusion of compiler headers into AOT runtime 2020-04-17 13:11:08 +00:00
asm_intrinsifier.h [vm/compiler] Add check to prevent inclusion of compiler headers into AOT runtime 2020-04-17 13:11:08 +00:00
asm_intrinsifier_arm.cc [vm] Add _allocate and _setAt methods to _TwoByteString. 2020-05-12 17:33:50 +00:00
asm_intrinsifier_arm64.cc [vm] Add _allocate and _setAt methods to _TwoByteString. 2020-05-12 17:33:50 +00:00
asm_intrinsifier_ia32.cc [vm] Add _allocate and _setAt methods to _TwoByteString. 2020-05-12 17:33:50 +00:00
asm_intrinsifier_x64.cc [vm] Add _allocate and _setAt methods to _TwoByteString. 2020-05-12 17:33:50 +00:00
call_specializer.cc [vm/compiler] Optimize lazy field initialization 2020-06-01 21:28:18 +00:00
call_specializer.h [vm] Represent tagged pointers as C++ value types instead of C++ pointer types. 2020-04-25 05:21:27 +00:00
cha.cc [vm/compiler] Add check to prevent inclusion of compiler headers into AOT runtime 2020-04-17 13:11:08 +00:00
cha.h [vm/compiler] Add check to prevent inclusion of compiler headers into AOT runtime 2020-04-17 13:11:08 +00:00
cha_test.cc [vm] Add missing safepoint transitions. 2018-08-28 16:40:17 +00:00
compiler_pass.cc [vm/compiler] Add check to prevent inclusion of compiler headers into AOT runtime 2020-04-17 13:11:08 +00:00
compiler_pass.h [vm/compiler] Add check to prevent inclusion of compiler headers into AOT runtime 2020-04-17 13:11:08 +00:00
compiler_sources.gni [vm/compiler] Use PC-relative calls in AssertAssignable when calling TTS 2020-04-18 20:27:38 +00:00
compiler_state.cc [vm/compiler] Fix code determining if object can be a smi in LoadClassId. 2020-05-27 10:06:49 +00:00
compiler_state.h [vm/compiler] Fix code determining if object can be a smi in LoadClassId. 2020-05-27 10:06:49 +00:00
graph_intrinsifier.cc [vm] Cleanup flags which disable argument type checks and strong mode types 2020-05-08 15:53:09 +00:00
graph_intrinsifier.h [vm/compiler] Add check to prevent inclusion of compiler headers into AOT runtime 2020-04-17 13:11:08 +00:00
graph_intrinsifier_arm.cc [vm/compiler] Add check to prevent inclusion of compiler headers into AOT runtime 2020-04-17 13:11:08 +00:00
graph_intrinsifier_arm64.cc [vm/compiler] Add check to prevent inclusion of compiler headers into AOT runtime 2020-04-17 13:11:08 +00:00
graph_intrinsifier_ia32.cc [vm/compiler] Add check to prevent inclusion of compiler headers into AOT runtime 2020-04-17 13:11:08 +00:00
graph_intrinsifier_x64.cc [vm/compiler] Add check to prevent inclusion of compiler headers into AOT runtime 2020-04-17 13:11:08 +00:00
intrinsifier.cc [vm] Add _allocate and _setAt methods to _TwoByteString. 2020-05-12 17:33:50 +00:00
intrinsifier.h [vm/compiler] Add check to prevent inclusion of compiler headers into AOT runtime 2020-04-17 13:11:08 +00:00
method_recognizer.cc [vm/compiler] Recognize List.filled factory 2020-05-29 03:12:48 +00:00
method_recognizer.h [vm] Represent tagged pointers as C++ value types instead of C++ pointer types. 2020-04-25 05:21:27 +00:00
offsets_extractor.cc [vm] Represent tagged pointers as C++ value types instead of C++ pointer types. 2020-04-25 05:21:27 +00:00
README.md
recognized_methods_list.h [vm] Add _allocate and _setAt methods to _TwoByteString. 2020-05-12 17:33:50 +00:00
relocation.cc [vm] Fix crash in disassembler on trampolines 2020-05-26 17:31:58 +00:00
relocation.h [vm] Represent tagged pointers as C++ value types instead of C++ pointer types. 2020-04-25 05:21:27 +00:00
runtime_api.cc [vm/nnbd] NNBD-related fixes for bytecode mode 2020-05-08 22:10:06 +00:00
runtime_api.h [vm/nnbd] NNBD-related fixes for bytecode mode 2020-05-08 22:10:06 +00:00
runtime_offsets_extracted.h Revert "[vm] Check prefix.loadLibrary is called and returns before prefix members are used." 2020-05-29 09:04:02 +00:00
runtime_offsets_list.h [vm, gc] Rename HeapPage to OldPage for symmetry. 2020-05-08 18:28:06 +00:00
stub_code_compiler.cc [vm/compiler] Optimize lazy field initialization 2020-06-01 21:28:18 +00:00
stub_code_compiler.h [vm] Move megamorphic miss handling into the megamorphic call stub. 2020-05-15 20:28:21 +00:00
stub_code_compiler_arm.cc [vm/concurrency] Avoid stopping mutators when updating subtype test cache 2020-05-29 04:47:22 +00:00
stub_code_compiler_arm64.cc [vm/concurrency] Avoid stopping mutators when updating subtype test cache 2020-05-29 04:47:22 +00:00
stub_code_compiler_ia32.cc [vm/concurrency] Avoid stopping mutators when updating subtype test cache 2020-05-29 04:47:22 +00:00
stub_code_compiler_x64.cc [vm/aot] Fix aot cross-compilation scenario when gen_snapshot runs on Windows targets android x64. 2020-06-01 23:21:38 +00:00
type_testing_stubs_arm.cc [vm/compiler] Use PC-relative calls in AssertAssignable when calling TTS 2020-04-18 20:27:38 +00:00
type_testing_stubs_arm64.cc [vm/compiler] Use PC-relative calls in AssertAssignable when calling TTS 2020-04-18 20:27:38 +00:00
type_testing_stubs_x64.cc [vm/compiler] Use PC-relative calls in AssertAssignable when calling TTS 2020-04-18 20:27:38 +00:00
write_barrier_elimination.cc [vm] Represent tagged pointers as C++ value types instead of C++ pointer types. 2020-04-25 05:21:27 +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/nnbd] Support NNBD weak mode in vm/cc tests 2020-06-02 20:40:03 +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.