dibyendumajumdar/ravi

question on using aot mode when lua file has multiple funtions?

Closed this issue · 4 comments

the lua file is as bellow, i dont know how to call function sieve2 when lib was loaded by load_ravi_lib

local modulex = {};

function modulex.sieve()
local meta = {__index = function() end}
for iter=0,100000 do
local flags = {}
setmetatable(flags,meta);
for i=0,8190 do
flags[i] = 1
end
end
return 1899;
end

function modulex.sieve2()
local meta = {__index = function() end}
for iter=0,100000 do
local flags = {}
setmetatable(flags,meta);
for i=0,8190 do
flags[i] = 1
end
end
return 1888;
end

return modulex;

hi @taotao6666 - I will try it and get back

Here is my test

local m = {}
function m.foo()
        print 'foo'
end
function m.bar()
        print 'bar'
end
return m

I saved this to a file and created shared lib.
then

local chunk = package.load_ravi_lib('test_lib.so', 'mymain')
assert(chunk and type(chunk) == 'function')

local m = chunk()
m.foo()
m.bar()

So thing to remember is that the compiled code in shared library is a function created out of the Lua "chunk". You have to execute this function to get the table.

Having said this not sure what you are trying to do with your example code, as it seems bad for performance with Ravi.

i get why it does not worked. when lua file modified ravi or lua vm must be restarted before aot

okay I assume then your issue is resolved.