【问题标题】:Is there a way to freeze luajit(or some jit) generated code, and use it wihtout jit compiler?有没有办法冻结 luajit(或一些 jit)生成的代码,并在没有 jit 编译器的情况下使用它?
【发布时间】:2013-10-19 16:18:24
【问题描述】:

由于 luajit 或其他地方的 jit 编译器需要相当多的内存(对于嵌入式系统),我想知道:

有没有办法在内存充足的系统上运行 luajit(或其他基于 jit 的 VM),而不是冻结代码并在没有 jit 的情况下重用程序?

【问题讨论】:

  • 部分内存开销是冗余代码以及在编译代码失效时中止执行编译代码所需的信息。您无法真正避免这种情况,因为 JIT 编译的代码在运行时可能违反的某些假设下仍然是专门的,无论它是编译的 JIT 还是 AOT。另外,在任何情况下,您都需要完整的字节码和解释器,虽然按照桌面标准,它们很小,但对于某些嵌入式平台来说并不是花生。

标签: compiler-construction lua jit luajit


【解决方案1】:

不,LuaJIT 不能这样做,因为编译后的代码中没有足够的信息在不同的进程中重新创建它(同时确保它仍然等同于原始字节码。)

【讨论】:

  • 为什么?如果我理解正确,lua jit 所做的(简化)是采用一些代码路径,将它们(使用运行时数据)编译为机器代码,然后让程序运行机器代码而不是字节码。冻结这些结果的问题在哪里?
猜你喜欢
  • 2012-06-26
  • 1970-01-01
  • 2010-11-20
  • 2011-11-09
  • 1970-01-01
  • 2010-09-18
  • 2018-06-08
  • 2012-02-06
  • 1970-01-01
相关资源
最近更新 更多