wasm-micro-runtime/wamr-compiler
Marcin Kolny cbc2078898
AOT call stack optimizations (#3773)
- Implement TINY / STANDARD frame modes - tiny mode is only able to keep track on the IP
  and func idx, STANDARD mode provides more capabilities (parameters, stack pointer etc.).
- Implement FRAME_PER_FUNCTION / FRAME_PER_CALL modes - frame per function adds
  code at the beginning and at the end of each function for allocating / deallocating stack frame,
  whereas in per-call mode the frame is allocated before each call. The exception is call to
  the imported function, where frame-per-function mode also allocates the stack before the
  `call` instruction (as it can't instrument the imported function).

At the moment TINY + FRAME_PER_FUNCTION is automatically enabled in case GC and perf
profiling are disabled and `values` call stack feature is not requested. In all the other cases
STANDARD + FRAME_PER_CALL is used.

STANDARD + FRAME_PER_FUNCTION and TINY + FRAME_PER_CALL are currently not
implemented but possible, and might be enabled in the future.

ps. https://github.com/bytecodealliance/wasm-micro-runtime/issues/3758
2024-09-10 09:05:23 +08:00
..
build_llvm_arc.sh Fix several issues in CI binary releasing (#2064) 2023-03-26 12:19:45 +08:00
build_llvm_xtensa.sh Fix several issues in CI binary releasing (#2064) 2023-03-26 12:19:45 +08:00
build_llvm.py Fix Windows/MSVC build issues (#1498) 2022-09-17 21:16:38 +08:00
build_llvm.sh Fix several issues in CI binary releasing (#2064) 2023-03-26 12:19:45 +08:00
CMakeLists.txt Add support for RISCV32 ILP32F (#3708) 2024-08-15 15:17:42 +08:00
main.c AOT call stack optimizations (#3773) 2024-09-10 09:05:23 +08:00
README.md Update document for iwasm/wamrc dependent packages (#2183) 2023-05-08 16:30:56 +08:00

Build wamrc AOT compiler

Both wasm binary file and AOT file are supported by iwasm. The wamrc AOT compiler is to compile wasm binary file to AOT file which can also be run by iwasm. You can execute following commands to build wamrc compiler:

For Linux(Ubuntu 20.04 as an example):

First, make sure necessary dependency are installed:

sudo apt-get install git build-essential cmake g++-multilib libgcc-9-dev lib32gcc-9-dev ccache 
cd wamr-compiler
./build_llvm.sh (or "./build_llvm_xtensa.sh" to support xtensa target)
mkdir build && cd build
cmake .. (or "cmake .. -DWAMR_BUILD_PLATFORM=darwin" for MacOS)
make
# wamrc is generated under current directory

For Windows

cd wamr-compiler
python build_llvm.py
mkdir build && cd build
cmake ..
cmake --build . --config Release
# wamrc.exe is generated under .\Release directory