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:
William Wilgus 2018-11-11 18:27:19 -05:00
parent 42240f6990
commit c6fcb1cf45
10 changed files with 88 additions and 25 deletions

View file

@ -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);
}