Hi, Sergey
thanks for the answer. LGTM
Hi, Sergey! Thanks for the review! On 06.06.24, Sergey Bronnikov wrote:Hi, Sergey thanks for the patch! Please see a question below. On 22.04.2024 11:49, Sergey Kaplun wrote:This option enables table bump optimization if sink optimization is enabled. The table bump optimization patches the bytecodes with a table allocation on the trace recording if the recorded trace exceeds the size of the allocated table. This optimization still has some bugs, so it is disabled by default. For more details, see the comment in <CMakeLists.txt>. Needed for tarantool/tarantool#9924 --- CMakeLists.txt | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 2355ce17..52014296 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -307,6 +307,23 @@ if(LUAJIT_ENABLE_COVERAGE) include(CodeCoverage) endif() +# Enable table bump optimization. This optimization patches the +# bytecodes with a table allocation on the trace recording if the +# recorded trace exceeds the size of the allocated table. +# This optimization still has some bugs, so it is disabled by +# default. See also:https://github.com/LuaJIT/LuaJIT/issues/606. +option(LUAJIT_ENABLE_TABLE_BUMP "Enable table bump optimization" OFF) +if(LUAJIT_ENABLE_TABLE_BUMP) + # Within table bump optimization enabled (and due to our + # modification related to metrics), some offsets in `GG_State` + # stop fit in 12bit immediate. Hence, the build failed due to + # the DASM error (DASM_S_RANGE_I). + if(CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64") + message(FATAL_ERROR "Table Bump optimization is unsupported for aarch64")Table optimization works on all architectures supported by LuaJIT except aarch64, right?In the upstream, it works on all architectures. We have a problem building LuaJIT for aarch64 due to our metrics that too grows the `GG_State`.+ endif() + AppendFlags(TARGET_C_FLAGS -DLUAJIT_ENABLE_TABLE_BUMP) +endif() + # --- Main source tree --------------------------------------------------------- add_subdirectory(src)