【求助】关于方舟编译器的一些疑问,ark_stub_compiler生成的stub.an的作用是什么...

最近想去适配arkcompiler\ets_runtime\ecmascript\compiler\assembler目录下riscv的内容。

拉取了openharmony4.0 0905的版本:

repo init -u https://gitee.com/riscv-sig/manifest.git -b weekly -m default_weekly_0905.xml --no-repo-verify
repo sync -c
repo forall -c "git lfs pull"
./build/prebuilts_download.sh

看了BUILD.gn,发现arkcompiler\ets_runtime\ecmascript\compiler\assembler目录下的代码是被编译到了ark_stub_complier进程里。

Q1.目前没有发现相关的文档有说明 ark_stub_complier 进程的功能与用法,有没有懂的请指导下。

 

按文档里的指导

https://gitee.com/openharmony/arkcompiler_ets_runtime/tree/master/docs

编译了ark的相关组件(也整编过:./build.sh --product-name rk3568 )

./build.sh --product-name rk3568 --build-target ark_js_host_linux_tools_packages --build-target ets_frontend_build --build-target ark_host_linux_tools_packages

并在x64的环境上运行。一切正常。运行./ark_stub_complier的时候生成了stub.an文件。整版本grep,发现stub.an是用作一些 python脚本的参数

/usr/bin/env ../../build/templates/metadata/gen_module_info.py --system-base-dir system --ramdisk-base-dir ramdisk --vendor-base-dir vendor --updater-base-dir updater --sys_prod-base-dir sys_prod --eng_system-base-dir eng_system --eng_chipset-base-dir eng_chipset --updater_vendor-base-dir updater_vendor --chip_prod-base-dir chip_prod --type lib --target-label //arkcompiler/ets_runtime/ecmascript/compiler$:stub.an\(//build/toolchain/ohos$:ohos_clang_arm\) --source-dir obj/arkcompiler/ets_runtime/ecmascript/compiler --label-name stub.an --output-file obj/arkcompiler/ets_runtime/ecmascript/compiler/stub.an_module_info.json --install-name stub.an --relative-install-dir module/arkcompiler --install-images system --prebuilt --module-source //out/rk3568/gen/arkcompiler/ets_runtime/stub.an --notice obj/arkcompiler/ets_runtime/ecmascript/compiler/stub.an.notice.txt --part-name ets_runtime --subsystem-name arkcompiler

/usr/bin/env ../../arkcompiler/ets_runtime/script/build_resource_to_cpp.py --input /home/ptg/ohos-4.0/out/rk3568/clang_x64/gen/arkcompiler/ets_runtime/stub.an --output /home/ptg/ohos-4.0/out/rk3568/clang_x64/gen/arkcompiler/ets_runtime/stub_an.cpp

 Q2.请问stub.an文件的作用是什么?

 

生成的stub_an.cpp文件最终被通过ohos_source_set("libark_stub_set") -->libark_jsruntime_static-->libark_jsruntime-->ark_js_packages编入到了ark_js_packages库里。我在x64的代码里增加了打印(见下图),发现运行ark_aot_compiler的时候打印没有出现,是不是说明stub.an里并没有将assembler_x64.cpp文件里相关的接口编入。

【求助】关于方舟编译器的一些疑问,ark_stub_compiler生成的stub.an的作用是什么..._第1张图片

Q3.我应该如何针对riscv对该部分内容进行适配? 

你可能感兴趣的:(【求助】关于方舟编译器的一些疑问,ark_stub_compiler生成的stub.an的作用是什么...)