From 46e48de84abfa4dbc8886ffe0a24300164f5a6fe Mon Sep 17 00:00:00 2001 From: zhaoziming Date: Wed, 13 Dec 2023 15:28:15 +0800 Subject: [PATCH] Changed register representation to 16 bits for libark_defect_scan_aux Signed-off-by: zhaoziming Change-Id: Ie9373326f1ef1505e0122b1b04738dab691cb3c7 --- compiler/BUILD.gn | 103 ++++++++++++++---------- compiler/optimizer/ir/constants.h | 6 ++ compiler/optimizer/ir/locations.h | 6 ++ compiler/optimizer/ir/spill_fill_data.h | 2 + libark_defect_scan_aux/BUILD.gn | 6 +- 5 files changed, 79 insertions(+), 44 deletions(-) diff --git a/compiler/BUILD.gn b/compiler/BUILD.gn index a4c723abf3..74e8445b36 100644 --- a/compiler/BUILD.gn +++ b/compiler/BUILD.gn @@ -145,54 +145,73 @@ ohos_shared_library("libarkcompiler") { subsystem_name = "arkcompiler" } +libarkcompiler_frontend_static_common_deps = [ + ":codegen_language_extensions_h", + ":compiler_events_gen_h", + ":compiler_interface_extensions_inl_h", + ":compiler_logger_components_inc", + ":compiler_options_gen_h", + ":cpu_features_gen_inc", + ":intrinsics_codegen_ext_inl_h", + ":intrinsics_inline_inl", + ":intrinsics_ir_build_inl_h", + ":intrinsics_ir_build_static_call_inl", + ":intrinsics_ir_build_virtual_call_inl", + ":intrinsics_stub_inl", + ":intrinsics_stub_inl_h", + ":ir_dyn_base_types_h", + ":isa_gen_libarkcompiler_inst_builder_gen_cpp", + ":libarkcompiler_ecma_intrinsics_enum_inl", + ":libarkcompiler_generate_ecma_inl", + ":libarkcompiler_intrinsics_gen_inl_generate_operations_intrinsic_graph_inl", + ":libarkcompiler_intrinsics_gen_inl_generate_operations_intrinsic_inst_inl", + ":libarkcompiler_intrinsics_gen_inl_get_intrinsics_inl", + ":libarkcompiler_intrinsics_gen_inl_get_intrinsics_names_inl", + ":libarkcompiler_intrinsics_gen_inl_intrinsic_codegen_test_inl", + ":libarkcompiler_intrinsics_gen_inl_intrinsic_flags_test_inl", + ":libarkcompiler_intrinsics_gen_inl_intrinsics_codegen_inl", + ":libarkcompiler_intrinsics_gen_inl_intrinsics_codegen_inl_h", + ":libarkcompiler_intrinsics_gen_inl_intrinsics_enum_inl", + ":libarkcompiler_intrinsics_gen_inl_intrinsics_flags_inl", + ":libarkcompiler_intrinsics_gen_inl_intrinsics_ir_build_inl", + ":libarkcompiler_opcodes_h_IR-instructions_md", + ":libarkcompiler_opcodes_h_arch_info_gen_h", + ":libarkcompiler_opcodes_h_codegen_arm64_gen_inc", + ":libarkcompiler_opcodes_h_inst_checker_gen_h", + ":libarkcompiler_opcodes_h_opcodes_h", + ":source_languages_h", + "$ark_root/libpandabase:libarkbase_frontend_static", + "$ark_root/libpandafile:isa_gen_libarkfile_bytecode_instruction-inl_gen_h", + "$ark_root/libpandafile:isa_gen_libarkfile_bytecode_instruction_enum_gen_h", + "$ark_root/libpandafile:libarkfile_frontend_static", + "$ark_root/libpandafile:libarkfile_type_gen_h", + sdk_libc_secshared_dep, +] + ohos_static_library("libarkcompiler_frontend_static") { stack_protector_ret = false sources = libarkcompiler_sources configs = libarkcompiler_configs - deps = [ - ":codegen_language_extensions_h", - ":compiler_events_gen_h", - ":compiler_interface_extensions_inl_h", - ":compiler_logger_components_inc", - ":compiler_options_gen_h", - ":cpu_features_gen_inc", - ":intrinsics_codegen_ext_inl_h", - ":intrinsics_inline_inl", - ":intrinsics_ir_build_inl_h", - ":intrinsics_ir_build_static_call_inl", - ":intrinsics_ir_build_virtual_call_inl", - ":intrinsics_stub_inl", - ":intrinsics_stub_inl_h", - ":ir_dyn_base_types_h", - ":isa_gen_libarkcompiler_inst_builder_gen_cpp", - ":libarkcompiler_ecma_intrinsics_enum_inl", - ":libarkcompiler_generate_ecma_inl", - ":libarkcompiler_intrinsics_gen_inl_generate_operations_intrinsic_graph_inl", - ":libarkcompiler_intrinsics_gen_inl_generate_operations_intrinsic_inst_inl", - ":libarkcompiler_intrinsics_gen_inl_get_intrinsics_inl", - ":libarkcompiler_intrinsics_gen_inl_get_intrinsics_names_inl", - ":libarkcompiler_intrinsics_gen_inl_intrinsic_codegen_test_inl", - ":libarkcompiler_intrinsics_gen_inl_intrinsic_flags_test_inl", - ":libarkcompiler_intrinsics_gen_inl_intrinsics_codegen_inl", - ":libarkcompiler_intrinsics_gen_inl_intrinsics_codegen_inl_h", - ":libarkcompiler_intrinsics_gen_inl_intrinsics_enum_inl", - ":libarkcompiler_intrinsics_gen_inl_intrinsics_flags_inl", - ":libarkcompiler_intrinsics_gen_inl_intrinsics_ir_build_inl", - ":libarkcompiler_opcodes_h_IR-instructions_md", - ":libarkcompiler_opcodes_h_arch_info_gen_h", - ":libarkcompiler_opcodes_h_codegen_arm64_gen_inc", - ":libarkcompiler_opcodes_h_inst_checker_gen_h", - ":libarkcompiler_opcodes_h_opcodes_h", - ":source_languages_h", - "$ark_root/libpandabase:libarkbase_frontend_static", - "$ark_root/libpandafile:isa_gen_libarkfile_bytecode_instruction-inl_gen_h", - "$ark_root/libpandafile:isa_gen_libarkfile_bytecode_instruction_enum_gen_h", - "$ark_root/libpandafile:libarkfile_frontend_static", - "$ark_root/libpandafile:libarkfile_type_gen_h", - sdk_libc_secshared_dep, - ] + deps = libarkcompiler_frontend_static_common_deps + + include_dirs = [ "$ark_root/compiler/optimizer" ] + + part_name = "runtime_core" + subsystem_name = "arkcompiler" +} + +ohos_static_library( + "libarkcompiler_frontend_static_for_libark_defect_scan_aux") { + stack_protector_ret = false + sources = libarkcompiler_sources + + configs = libarkcompiler_configs + + defines = [ "IR_FOR_LIBARK_DEFECT_SCAN_AUX" ] + + deps = libarkcompiler_frontend_static_common_deps include_dirs = [ "$ark_root/compiler/optimizer" ] diff --git a/compiler/optimizer/ir/constants.h b/compiler/optimizer/ir/constants.h index 9bdc21383c..9a76a53c70 100644 --- a/compiler/optimizer/ir/constants.h +++ b/compiler/optimizer/ir/constants.h @@ -29,9 +29,15 @@ using PcType = uint32_t; using LinearNumber = uint32_t; // Update this when it will be strictly necessary to assign more than 255 registers in bytecode optimizer. +#ifdef IR_FOR_LIBARK_DEFECT_SCAN_AUX +using Register = uint16_t; +using StackSlot = uint16_t; +using ImmTableSlot = uint16_t; +#else using Register = uint8_t; using StackSlot = uint8_t; using ImmTableSlot = uint8_t; +#endif constexpr uint32_t MAX_NUM_STACK_SLOTS = std::numeric_limits::max(); constexpr uint32_t MAX_NUM_IMM_SLOTS = std::numeric_limits::max(); diff --git a/compiler/optimizer/ir/locations.h b/compiler/optimizer/ir/locations.h index 2245d2b91d..8f1e4eef5b 100644 --- a/compiler/optimizer/ir/locations.h +++ b/compiler/optimizer/ir/locations.h @@ -214,14 +214,20 @@ public: std::string ToString(Arch arch); private: +#ifdef IR_FOR_LIBARK_DEFECT_SCAN_AUX + uint32_t bit_fields_; +#else uint16_t bit_fields_; +#endif using KindField = BitField; using ValueField = KindField::NextField; }; +#ifndef IR_FOR_LIBARK_DEFECT_SCAN_AUX static_assert(sizeof(Location) <= sizeof(uint16_t)); +#endif class LocationsInfo { public: diff --git a/compiler/optimizer/ir/spill_fill_data.h b/compiler/optimizer/ir/spill_fill_data.h index 8bc19460e4..d0cd0bb2b3 100644 --- a/compiler/optimizer/ir/spill_fill_data.h +++ b/compiler/optimizer/ir/spill_fill_data.h @@ -92,7 +92,9 @@ private: DataType::Type type_ {DataType::NO_TYPE}; }; +#ifndef IR_FOR_LIBARK_DEFECT_SCAN_AUX static_assert(sizeof(SpillFillData) <= sizeof(uint64_t)); +#endif namespace sf_data { diff --git a/libark_defect_scan_aux/BUILD.gn b/libark_defect_scan_aux/BUILD.gn index cee04e5f03..b5b86f9220 100644 --- a/libark_defect_scan_aux/BUILD.gn +++ b/libark_defect_scan_aux/BUILD.gn @@ -23,6 +23,8 @@ config("defectscanaux_public_config") { "$ark_root/libpandafile:arkfile_public_config", "$ark_root/compiler:arkcompiler_public_config", ] + + defines = [ "IR_FOR_LIBARK_DEFECT_SCAN_AUX" ] } config("defectscanaux_test_config") { @@ -63,7 +65,7 @@ ohos_shared_library("libark_defect_scan_aux") { deps = [ ":defectscanaux_intrinsic_intrinsic_map_table_h", ":defectscanaux_opcode_opcode_map_table_h", - "$ark_root/compiler:libarkcompiler_frontend_static", + "$ark_root/compiler:libarkcompiler_frontend_static_for_libark_defect_scan_aux", "$ark_root/libpandabase:libarkbase_frontend_static", "$ark_root/libpandafile:libarkfile_frontend_static", sdk_libc_secshared_dep, @@ -83,7 +85,7 @@ ohos_static_library("libark_defect_scan_aux_static_test") { deps = [ ":defectscanaux_intrinsic_intrinsic_map_table_h", ":defectscanaux_opcode_opcode_map_table_h", - "$ark_root/compiler:libarkcompiler_frontend_static", + "$ark_root/compiler:libarkcompiler_frontend_static_for_libark_defect_scan_aux", "$ark_root/libpandabase:libarkbase_frontend_static", "$ark_root/libpandafile:libarkfile_frontend_static", sdk_libc_secshared_dep, -- Gitee