d23909802e
Parameter instructions inside CatchBlockEntry's initial definitions are similar to Phi instructions: Parameter value at entry to the catch would be taken from corresponding slot in the environment attached to the instruction which threw the exception which is being caught. Thus similarly to Phi-s Parameter instructions can be redundant (if they always evaluate to the same value - no matter where control arrives from) or dead (if their value never reaches real instruction). We already had an analysis to discover subset of redundant Parameter-s which always evaluate to a constant value. This CL introduces analysis to eliminate dead Parameter-s. This should significantly reduce size of metadata generated for try/catch and reduce spilling within functions with try/catch. On Flutter Gallery: reduces Isolate part of snapshot by 15k (0.7%), Instructions part is reduced by 2.7K (0.06%). Change-Id: I345813e326152ca2ed2d4d5353bb64730d7545d4 Cq-Include-Trybots: luci.dart.try:vm-kernel-precomp-android-release-arm-try, vm-kernel-precomp-bare-linux-release-simarm-try, vm-kernel-precomp-bare-linux-release-simarm64-try, vm-kernel-precomp-bare-linux-release-x64-try, vm-kernel-precomp-linux-debug-x64-try, vm-kernel-precomp-linux-product-x64-try Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/97110 Commit-Queue: Vyacheslav Egorov <vegorov@google.com> Reviewed-by: Aart Bik <ajcbik@google.com>
164 lines
4.9 KiB
Plaintext
164 lines
4.9 KiB
Plaintext
# Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file
|
|
# for details. All rights reserved. Use of this source code is governed by a
|
|
# BSD-style license that can be found in the LICENSE file.
|
|
|
|
# This file contains all sources (vm and tests) for the compiler pipeline.
|
|
# Unit test files need to have a "_test" suffix appended to the name.
|
|
compiler_sources = [
|
|
"aot/aot_call_specializer.cc",
|
|
"aot/aot_call_specializer.h",
|
|
"aot/precompiler.cc",
|
|
"aot/precompiler.h",
|
|
"asm_intrinsifier.cc",
|
|
"asm_intrinsifier.h",
|
|
"asm_intrinsifier_arm.cc",
|
|
"asm_intrinsifier_arm64.cc",
|
|
"asm_intrinsifier_dbc.cc",
|
|
"asm_intrinsifier_ia32.cc",
|
|
"asm_intrinsifier_x64.cc",
|
|
"assembler/assembler.cc",
|
|
"assembler/assembler.h",
|
|
"assembler/assembler_arm.cc",
|
|
"assembler/assembler_arm.h",
|
|
"assembler/assembler_arm64.cc",
|
|
"assembler/assembler_arm64.h",
|
|
"assembler/assembler_dbc.cc",
|
|
"assembler/assembler_dbc.h",
|
|
"assembler/assembler_ia32.cc",
|
|
"assembler/assembler_ia32.h",
|
|
"assembler/assembler_x64.cc",
|
|
"assembler/assembler_x64.h",
|
|
"assembler/disassembler.cc",
|
|
"assembler/disassembler.h",
|
|
"assembler/disassembler_arm.cc",
|
|
"assembler/disassembler_arm64.cc",
|
|
"assembler/disassembler_dbc.cc",
|
|
"assembler/disassembler_kbc.cc",
|
|
"assembler/disassembler_kbc.h",
|
|
"assembler/disassembler_x86.cc",
|
|
"assembler/object_pool_builder.h",
|
|
"backend/block_scheduler.cc",
|
|
"backend/block_scheduler.h",
|
|
"backend/branch_optimizer.cc",
|
|
"backend/branch_optimizer.h",
|
|
"backend/code_statistics.cc",
|
|
"backend/code_statistics.h",
|
|
"backend/compile_type.h",
|
|
"backend/constant_propagator.cc",
|
|
"backend/constant_propagator.h",
|
|
"backend/flow_graph.cc",
|
|
"backend/flow_graph.h",
|
|
"backend/flow_graph_checker.cc",
|
|
"backend/flow_graph_checker.h",
|
|
"backend/flow_graph_compiler.cc",
|
|
"backend/flow_graph_compiler.h",
|
|
"backend/flow_graph_compiler_arm.cc",
|
|
"backend/flow_graph_compiler_arm64.cc",
|
|
"backend/flow_graph_compiler_dbc.cc",
|
|
"backend/flow_graph_compiler_ia32.cc",
|
|
"backend/flow_graph_compiler_x64.cc",
|
|
"backend/il.cc",
|
|
"backend/il.h",
|
|
"backend/il_arm.cc",
|
|
"backend/il_arm64.cc",
|
|
"backend/il_dbc.cc",
|
|
"backend/il_ia32.cc",
|
|
"backend/il_printer.cc",
|
|
"backend/il_printer.h",
|
|
"backend/il_x64.cc",
|
|
"backend/inliner.cc",
|
|
"backend/inliner.h",
|
|
"backend/linearscan.cc",
|
|
"backend/linearscan.h",
|
|
"backend/locations.cc",
|
|
"backend/locations.h",
|
|
"backend/locations_helpers.h",
|
|
"backend/locations_helpers_arm.h",
|
|
"backend/loops.cc",
|
|
"backend/loops.h",
|
|
"backend/range_analysis.cc",
|
|
"backend/range_analysis.h",
|
|
"backend/redundancy_elimination.cc",
|
|
"backend/redundancy_elimination.h",
|
|
"backend/slot.cc",
|
|
"backend/slot.h",
|
|
"backend/type_propagator.cc",
|
|
"backend/type_propagator.h",
|
|
"call_specializer.cc",
|
|
"call_specializer.h",
|
|
"cha.cc",
|
|
"cha.h",
|
|
"compiler_pass.cc",
|
|
"compiler_pass.h",
|
|
"compiler_state.cc",
|
|
"compiler_state.h",
|
|
"ffi.cc",
|
|
"ffi.h",
|
|
"frontend/base_flow_graph_builder.cc",
|
|
"frontend/base_flow_graph_builder.h",
|
|
"frontend/bytecode_flow_graph_builder.cc",
|
|
"frontend/bytecode_flow_graph_builder.h",
|
|
"frontend/bytecode_reader.cc",
|
|
"frontend/bytecode_reader.h",
|
|
"frontend/bytecode_scope_builder.cc",
|
|
"frontend/bytecode_scope_builder.h",
|
|
"frontend/constant_evaluator.cc",
|
|
"frontend/constant_evaluator.h",
|
|
"frontend/flow_graph_builder.cc",
|
|
"frontend/flow_graph_builder.h",
|
|
"frontend/kernel_binary_flowgraph.cc",
|
|
"frontend/kernel_binary_flowgraph.h",
|
|
"frontend/kernel_fingerprints.cc",
|
|
"frontend/kernel_fingerprints.h",
|
|
"frontend/kernel_to_il.cc",
|
|
"frontend/kernel_to_il.h",
|
|
"frontend/kernel_translation_helper.cc",
|
|
"frontend/kernel_translation_helper.h",
|
|
"frontend/prologue_builder.cc",
|
|
"frontend/prologue_builder.h",
|
|
"frontend/scope_builder.cc",
|
|
"frontend/scope_builder.h",
|
|
"graph_intrinsifier.cc",
|
|
"graph_intrinsifier.h",
|
|
"graph_intrinsifier_arm.cc",
|
|
"graph_intrinsifier_arm64.cc",
|
|
"graph_intrinsifier_ia32.cc",
|
|
"graph_intrinsifier_x64.cc",
|
|
"intrinsifier.cc",
|
|
"intrinsifier.h",
|
|
"jit/compiler.cc",
|
|
"jit/compiler.h",
|
|
"jit/jit_call_specializer.cc",
|
|
"jit/jit_call_specializer.h",
|
|
"method_recognizer.cc",
|
|
"method_recognizer.h",
|
|
"recognized_methods_list.h",
|
|
"relocation.cc",
|
|
"relocation.h",
|
|
"runtime_api.cc",
|
|
"runtime_api.h",
|
|
"stub_code_compiler.h",
|
|
"stub_code_compiler_arm.cc",
|
|
"stub_code_compiler_arm64.cc",
|
|
"stub_code_compiler_dbc.cc",
|
|
"stub_code_compiler_ia32.cc",
|
|
"stub_code_compiler_x64.cc",
|
|
]
|
|
|
|
compiler_sources_tests = [
|
|
"assembler/assembler_arm64_test.cc",
|
|
"assembler/assembler_arm_test.cc",
|
|
"assembler/assembler_dbc_test.cc",
|
|
"assembler/assembler_ia32_test.cc",
|
|
"assembler/assembler_test.cc",
|
|
"assembler/assembler_x64_test.cc",
|
|
"assembler/disassembler_test.cc",
|
|
"backend/il_test.cc",
|
|
"backend/locations_helpers_test.cc",
|
|
"backend/loops_test.cc",
|
|
"backend/range_analysis_test.cc",
|
|
"backend/redundancy_elimination_test.cc",
|
|
"backend/slot_test.cc",
|
|
"cha_test.cc",
|
|
]
|