标签: luajit

是否有任何多线程跟踪JIT编译器的例子?

JVM和.NET CLR都包含支持多个用户线程的即时编译器.但是,我相信这些是一次一个方法的JIT.

我所知道的所有跟踪JIT,例如LuaJITPyPy,都只是单线程的.

是否有任何跟踪支持多个用户线程的JIT的示例?如果没有,是否有任何技术原因导致这些不存在?

multithreading jit pypy compilation luajit

9
推荐指数
1
解决办法
359
查看次数

LuaJIT是否支持表__gc?

Lua 5.2(与5.1相反)支持表的__gc.

LuaJIT借用了这个不错的功能吗?

(我做了谷歌搜索,并检查了LuaJIT的变更历史,但无法找到答案.)

lua luajit

8
推荐指数
1
解决办法
968
查看次数

llvm/tools:lli REPL与LuaJIT相比

我想知道是否有人有llvm/tools的经验 - lli解释器/ JIT编译器(参见http://llvm.org/docs/GettingStarted.html#tools).我对您可以提供的任何信息感兴趣(速度,复杂性,实现等).

谢谢.

更新:

好吧,假设lli充当解释器,如何将bitcode执行与LuaJIT VM执行进行比较?当lli充当jit-compiler(同样的比较)时呢?

注意:我只询问是否有人有经验/愿意花些时间分享.

interpreter jit llvm luajit

7
推荐指数
1
解决办法
1419
查看次数

将LuaJIT模块嵌入到C应用程序中

在我的应用程序中,我从C后端公开了所有Lua库.现在,我需要加载一个Lua模块.对此的方法似乎是:

lua_getglobal(L, "require");
lua_pushstring(L, libname);
lua_pcall(L, 1, 0, 0);
Run Code Online (Sandbox Code Playgroud)

将搜索package.path以查找<libname>.lua并加载它.

是否可以将Lua模块内置到C应用程序中(以便模块成为C应用程序的一部分)?所以我不必单独打包Lua模块.不知何故,我无法找到任何参考或示例!:(

ps我正在使用LuaJIT-2.0.2,有问题的库是SciLua/Time(使用ffi)

lua luajit

7
推荐指数
1
解决办法
2608
查看次数

LuaJIT的跟踪编译器如何工作?

我一直在阅读JIT和LuaJIT的跟踪编译器,最后我提出了一些问题.

根据我的理解,LuaJIT的JIT不会像Java的HotSpot那样编译热门方法,它会编译源自循环的热路径.这是否意味着如果某些东西不是来自循环(比方说,我从C-api调用Lua函数)那么代码永远不会被jitted?当你遇到另一个循环时会发生什么?第二个循环的路径是JIT,然后是来自该循环的新路径,或者第二个循环是否是同一路径的一部分?

口译员如何选择最佳的热门路径?假设我有一个整数的哈希表 - >字符串.现在假设我调用table [x],其中x为3和5,它们已成为热路径和jitted,解释器如何决定哪个jitted代码调用table [x],其中x为4?

另一件令我绞尽脑汁的事情.由于路径是编译的,而不是函数,跟踪编译器是否需要更多的内存?既然你不能真正重用其他路径的编译代码我的意思,因为在一般情况下路径可能比单个函数大...

lua luajit

7
推荐指数
2
解决办法
3696
查看次数

LuaJIT没有看到LuaRocks安装的岩石

lua -e"print(package.path)"

./?.lua;/usr/share/lua/5.1/?.lua;/usr/share/lua/5.1/?/init.lua;/usr/lib/lua/5.1/?.lua;/usr/ LIB/LUA/5.1 /?/ init.lua

luajit -e"print(package.path)"

./?.lua;/usr/local/share/luajit-2.0.0-beta8/?.lua;/usr/local/share/lua/5.1/?.lua;/usr/local/share/lua/5.1 /?/init.lua

我试过附加lua的package.path,尽管没有骰子.LuaJIT似乎无法找到任何岩石,这很奇怪.我该怎么办?

lua luajit luarocks

6
推荐指数
2
解决办法
4494
查看次数

将C结构指针传递给lua脚本

我想知道有没有办法将结构指针传递给lua脚本,并从lua到达它的成员而不复制(用于读写目的).

那么,例如是否可以直接通过其指针覆盖ac结构的成员?

(我正在使用luajit)

c lua luajit

6
推荐指数
2
解决办法
8545
查看次数

如何将指针传递给LuaJIT ffi以用作out参数?

假设有以下C代码:

struct Foo { int dummy; }
int tryToAllocateFoo(Foo ** dest);
Run Code Online (Sandbox Code Playgroud)

...如何在LuaJIT中进行以下操作?

Foo * pFoo = NULL;
tryToAllocateFoo(&pFoo);
Run Code Online (Sandbox Code Playgroud)

lua ffi luajit

6
推荐指数
1
解决办法
3278
查看次数

通过来自 JWT 令牌的解码值限制 NGINX 速率

我有一个关于 NGINX 速率限制的问题。

是否可以根据 JWT 令牌的解码值进行速率限制?我在文档中找不到任何这样的信息。

或者,即使有一种通过创建纯自定义变量(使用 LuaJIT)来限制速率的方法,该变量将从我解码的 JWT 中分配一个值 - 也可以完成这项工作。问题是limit_req模块似乎在请求到达 luaJIT 阶段之前执行,所以已经太晚了!

一个解决方案将不胜感激。

nginx rate-limiting luajit openresty

6
推荐指数
1
解决办法
830
查看次数

在没有额外分配的情况下从 Lua 修改 main() 中的 C++ 数组

我正在绘制一个小的 C++ 程序,它将把数组传递给 Lua 并在那里修改它们,我打算在程序中读取一个 lua 脚本,这样我就可以修改它而无需重新编译程序

我的第一个障碍是确保 Lua 能够修改已经分配的数组,而不是在 Lua 空间中再次分配它们。数据将是浮动的,并且大小会非常大,但我现在从很小的地方开始。

为了简化这个接口,我尝试了 LuaBridge 2.6,但它没有提供预期的结果。下面是一个完全“工作”的程序。

#include <iostream>
#include <cstdint>
#include <cstring>
#include <vector>
#include <lua5.3/lua.hpp>
#include <LuaBridge/LuaBridge.h>

int main(void)
    {
    const uint32_t      LENGTH = 512 * 256;
    std::vector <float> input(LENGTH),
                        output(LENGTH);

    memset(output.data(), 0, LENGTH * sizeof(float));   // Zero the output
    for(uint32_t i = 0; i < LENGTH; i++)                // Populate input
        input[i] = (float)i + 0.5f;

    lua_State *luastate = luaL_newstate();
    luabridge::push(luastate, input.data());    // Supposedly passing a pointer to the first …
Run Code Online (Sandbox Code Playgroud)

c++ lua luajit luabridge

6
推荐指数
1
解决办法
256
查看次数