upload runtime_core

Signed-off-by: y00576111 <yaojian16@huawei.com>
Change-Id: I2509006818624fd3960ef645165fdb1f317d3d5e
This commit is contained in:
y00576111
2021-09-07 21:51:18 +08:00
parent 1317165652
commit a4599e5405
150 changed files with 14662 additions and 1947 deletions
+6 -4
View File
@@ -14,6 +14,10 @@
import("//ark/runtime_core/ark_config.gni")
import("//build/ohos.gni")
config("arkdisassembler_public_config") {
defines = [ "PANDA_WITH_ECMASCRIPT" ]
}
arkdisassembler_sources = [
"$target_gen_dir/bc_ins_to_pandasm_ins.cpp",
"$target_gen_dir/get_ins_info.cpp",
@@ -25,6 +29,7 @@ arkdisassembler_sources = [
arkdisassembler_configs = [
sdk_libc_secshared_config,
":arkdisassembler_public_config",
"$ark_root:ark_config",
"$ark_root/libpandabase:arkbase_public_config",
"$ark_root/assembler:arkassembler_public_config",
@@ -121,10 +126,7 @@ ark_isa_gen("isa_gen_ark_disam") {
ark_gen_file("get_instructions_cpp") {
template_file = "$ark_root/disassembler/templates/get_instructions.cpp.erb"
data_file = "$ark_root/isa/builtins.yaml"
requires = [
"$ark_root/isa/builtinsapi.rb",
"//ark/js_runtime/ecmascript/ecma_builtins.rb",
]
requires = [ "$ark_root/isa/builtinsapi.rb" ]
output_file = "$target_gen_dir/get_instructions.cpp"
}
-11
View File
@@ -230,17 +230,6 @@ add_custom_target(disasm_binaries_test_metadata)
add_dependencies(disasm_binaries_test_metadata disasm_binaries-meta)
# builtin_tests files
compile_pre_build(TARGET disasm_binaries-builtins
FILE_SRC ${DISASM_TESTS_DIR}/builtins.pa
FILE_DST ${DISASM_BIN_DIR}/builtins.bc)
add_custom_target(disasm_binaries_test_builtins)
add_dependencies(disasm_binaries_test_builtins disasm_binaries-builtins)
add_dependencies(disasm_test_instructions disasm_binaries_test_builtins)
add_custom_target(disasm_tests
DEPENDS disasm_test_records
DEPENDS disasm_test_labels
@@ -43,7 +43,7 @@ IdList Disassembler::GetInstructions(pandasm::Function *method, panda_file::File
}
auto pa_ins = BytecodeInstructionToPandasmInstruction(bc_ins, method_id, method->language);
// alter instructions operands depending on instruction type
if (pa_ins.IsConditionalJump() || pa_ins.IsJump()) {
const int32_t jmp_offset = std::get<int64_t>(pa_ins.imms.at(0));
@@ -65,7 +65,7 @@ IdList Disassembler::GetInstructions(pandasm::Function *method, panda_file::File
<< "0x" << std::hex << code_id.GetOffset() << "). incorrect instruction at offset "
<< (bc_ins.GetAddress() - ins_arr) << ": invalid jump offset "
<< jmp_offset << " - jumping in the middle of another instruction!";
}
} else {
LOG(ERROR, DISASSEMBLER) << "> error encountered at " << std::dec << code_id.GetOffset() << " ("
@@ -78,7 +78,7 @@ IdList Disassembler::GetInstructions(pandasm::Function *method, panda_file::File
// if builtin - change imm to mnemonic
switch (pa_ins.opcode) {
% PandaBuiltins::instructions.each do |insn|
case pandasm::Opcode::<%=insn.mnemonic.tr('.', '_').upcase%>:
case pandasm::Opcode::<%=insn.mnemonic.tr('.', '_').upcase%>:
switch(pa_ins.imms[0].index()) {
// contains int64_t
case 0:
@@ -140,4 +140,4 @@ IdList Disassembler::GetInstructions(pandasm::Function *method, panda_file::File
return unknown_external_methods;
}
} // namespace panda::disasm
} // namespace panda::disasm
-29
View File
@@ -310,35 +310,6 @@ TEST(instructions_test, test_newarr)
EXPECT_TRUE(body_g.find("\tnewarr v0, a0, u64[]") != std::string::npos);
}
TEST(instructions_test, test_builtins)
{
Disassembler d {};
std::stringstream ss {};
d.Disassemble(g_bin_path_abs + "builtins.bc");
d.Serialize(ss);
size_t beg_g = ss.str().find("g_f32_f32_void_(f32 a0, f32 a1) <static> {");
size_t end_g = ss.str().find('}', beg_g);
ASSERT_TRUE(beg_g != std::string::npos && end_g != std::string::npos) << "function g not found";
std::string body_g = ss.str().substr(beg_g + strlen("g() {"), end_g - (beg_g + strlen("g() {")));
EXPECT_TRUE(body_g.find("\tbuiltin.acc i32tof32") != std::string::npos);
EXPECT_TRUE(body_g.find("\tbuiltin.acc i64tof32") != std::string::npos);
EXPECT_TRUE(body_g.find("\tbuiltin.acc f64tof32") != std::string::npos);
EXPECT_TRUE(body_g.find("\tbuiltin.acc monitorenter") != std::string::npos);
EXPECT_TRUE(body_g.find("\tbuiltin.acc monitorexit") != std::string::npos);
EXPECT_TRUE(body_g.find("\tbuiltin.bin2 fadd2f32, a1") != std::string::npos);
EXPECT_TRUE(body_g.find("\tbuiltin.bin2 fsub2f32, v13") != std::string::npos);
EXPECT_TRUE(body_g.find("\tbuiltin.bin2 fmul2f32, v13") != std::string::npos);
EXPECT_TRUE(body_g.find("\tbuiltin.bin2 fdiv2f32, v13") != std::string::npos);
EXPECT_TRUE(body_g.find("\tbuiltin.bin2 fmod2f32, v13") != std::string::npos);
EXPECT_TRUE(body_g.find("\tbuiltin.bin2 fcmpl2f32, a0") != std::string::npos);
EXPECT_TRUE(body_g.find("\tbuiltin.bin2 fcmpg2f32, v13") != std::string::npos);
}
int main(int argc, char **argv)
{
std::string dir_basename {};