lua-users home
lua-l archive

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]


hi,

I'm using codes luac.c as an example to compile output lua chunks. The
modified code (now integrated into my app) is tested to be working for
compiling Lua functions. However i have problem
compiling just lua tables. These are the scenarios that i have investigated
and their results.

Scenario 1:
Compile the following script

t001 = {t001_name = "mytable"}
F001 = t001

Result:
a chunk about 0x99 bytes long. A look into the binary chunk using hex editor
i can see symbols like t001, t001_name, mytable F001.

Scenario 2:
Compile the following script

t001 = {t001_name = "mytable"}

Result:
a chunk about 0x45 bytes long. A look into the binary chunk reveals no such
symbols like t001, t001_name or mytable.

Scnenario 3:

Build a table using the following algorithm, and output the chunk

lua_newtable(L);
lua_pushstring(L,"t001_name");
lua_pushstring(L,"mytable");
lua_settable(L, -3);
lua_setglobal(L,"t001");

Result:
same as Scenario 2:

Scnenario 4:

Build a table using the following algorithm, and output the chunk

lua_newtable(L);
lua_pushstring(L,"t001_name");
lua_pushstring(L,"mytable");
lua_settable(L, -3);
lua_setglobal(L,"t001");

lua_getglobal(L,"t001");
lua_setglobal(L,"F001");

Result:
same as Scenario 2:

These tests led me to my conclusion which is:

In scenario 1 because there is a line of 'code' that assigns t001 to F001
therefore t001 along with F001 is compile out.

On theother hand, Scenario 2 and 3 doesnt have any code therefore nothing is
compiled.

For Scenario 4, although i did set "F001" to "t001", this just modifies the
global table but there arent any code. So i get the same result as Scenario
2.

Therefore, there must be some code that uses these globals or else it is
droped from the lua_dump..

Is this true?
Do i need a different setup to compile the other scenario?

thanks
tham