Skip to content

Add C bytecode interpreter with ARM64 support - #85

Open
ivbondarev wants to merge 1 commit into
luavela:masterfrom
criteo-forks:cinterpreter
Open

ivbondarev wants to merge 1 commit into
luavela:masterfrom
criteo-forks:cinterpreter

Conversation

@ivbondarev

@ivbondarev ivbondarev commented Jun 29, 2026

Copy link
Copy Markdown
Contributor

Summary

This patch adds a second bytecode interpreter (written in C) in addition to the existing DynASM assembly VM.

  • C interpreter is selected with -DUJIT_CINTERP=ON
  • ARM64 support builds on it (UJIT_CINTERP is always on for ARM64)
  • A new C interp testing suite covers each bytecode and fast function
  • scripts/cinterp_tailcalls_verifier.py disassembles the built binary to check that compiler actually applied tail-call optimization to every bytecode and ffunc handlers

Limitations

C interpreter does not support JIT compilation, FFI and instrumenting profiler.

@ivbondarev
ivbondarev force-pushed the cinterpreter branch 9 times, most recently from 94e366f to bdba31c Compare August 30, 2026 16:45
…tive to the DynASM assembly VM, enabling LuaVela to run on ARM64 in addition to x86_64.

Co-authored-by: Anton Soldatov <igelhaus@gmail.com>
Co-authored-by: Igor Munkin <imun.dev@gmail.com>
Co-authored-by: Ilya Dailidyonok <eliasdaler@yandex.ru>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant