forked from len0rd/rockbox
lua inbinary strings
Allows saving of ram by reusing strings already stored in the binary
and storing a pointer instead of malloc and copy to get them inside
the lua state
Saves about 1.5K overall
Derivative of work by bogdanm
RAM optimizations: pseudo RO strings, functions in Flash
d54659b572
Change-Id: I21d6dcfa32523877efd9f70fb0f88f2a02872649
This commit is contained in:
parent
42240f6990
commit
c6fcb1cf45
10 changed files with 88 additions and 25 deletions
|
@ -25,6 +25,7 @@
|
|||
#define LUA_LIB
|
||||
|
||||
#include "lua.h"
|
||||
#include "lstring.h"
|
||||
|
||||
#include "lauxlib.h"
|
||||
#include "rocklib.h"
|
||||
|
@ -835,6 +836,7 @@ LUALIB_API int luaopen_rock(lua_State *L)
|
|||
static const struct lua_int_reg* rlci = rlib_const_int;
|
||||
for (; rlci->name; rlci++) {
|
||||
lua_pushinteger(L, rlci->value);
|
||||
luaS_newlloc(L, rlci->name, TSTR_INBIN);
|
||||
lua_setfield(L, -2, rlci->name);
|
||||
}
|
||||
|
||||
|
@ -853,7 +855,9 @@ LUALIB_API int luaopen_rock(lua_State *L)
|
|||
|
||||
static const struct lua_str_reg* rlcs = rlib_const_str;
|
||||
for (; rlcs->name; rlcs++) {
|
||||
luaS_newlloc(L, rlcs->value, TSTR_INBIN);
|
||||
lua_pushstring(L, rlcs->value);
|
||||
luaS_newlloc(L, rlcs->name, TSTR_INBIN);
|
||||
lua_setfield(L, -2, rlcs->name);
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue