几年前,曾经有人提出同样的问题,苹果公司是否更新了提交规则以允许在提交的应用程序中使用JITters? opensmalltalk-vm比非JITting版本快大约十倍,即使Apple Watch也有足够的RAM轻松运行它。
苹果的政策没有变化。需要一个 PROT_WRITE | PROT_EXEC
页面的应用程序不会被批准上架,这对于JIT是必要的。
我看到有两种方法可以解决这个问题:
使用AOT而非JIT:修改Cog以便在运行应用程序时在开发机器上将jitted代码存储到文件中,并进行测试覆盖率。这将jit所有代码。将代码文件放入应用程序包中。运行时,将文件加载到PROT_READ | PROT_EXEC
页面中并执行其中找到的所有方法。其他所有方法需要被解释。
有一种方法可以在您的应用程序中运行JIT:苹果的JavaScript JIT。它是目前所有移动平台上速度最快的。您可以帮助使SqueakJS的代码生成器产生更有效的JS代码。这将允许在JIT上运行所有Smalltalk代码,包括新方法。