2013-10-11 1 views
1

Поскольку JIT компилятором в LuaJIT или в другом месте, требует совсем немного памяти (для встраиваемых систем), я задаюсь вопросом:Есть ли способ заморозить luajit (или некоторый jit) сгенерированный код и использовать его в компиляторе jiht?

Есть ли способ запустить LuaJIT (или другой JIT на основе VM) на системе с большим количеством памяти, чем замораживать код и повторно использовать программу без jit?

+0

Части стоимости памяти является избыточным кодом и информацией, необходимой для прерывания выполнения скомпилированного кода, когда он недействителен. Вы не можете этого избежать, поскольку компилируемый код JIT по-прежнему специализируется на некоторых предположениях, которые могут быть нарушены во время выполнения, независимо от того, скомпилирован ли он JIT или AOT. Кроме того, в любом случае вам нужен полный байт-код и интерпретатор, и, хотя они крошечные по стандартам Desktop, они не являются арахисами для некоторых встроенных платформ. – delnan

ответ

1

Нет, LuaJIT не может этого сделать, потому что не хватает информации в скомпилированном коде, чтобы воссоздать его в другом процессе (обеспечивая при этом, что он по-прежнему эквивалентен исходном байткоде.)

+0

Почему? если я правильно понимаю, что lua jit делает (упрощенно), берет некоторый путь кода, компилирует их (используя данные времени исполнения) в машинный код и позволяет программе запускать машинный код вместо байт-кода. Где проблема в замораживании этих результатов? –

+0

См .: http://www.freelists.org/post/luajit/LuaJit-FFI-with-iOS,11 –