Example #1
0
void luaX_init (lua_State *L) {
  int i;
  TString *e = luaS_newliteral(L, LUA_ENV);  /* create env name */
  luaC_fix(L, obj2gco(e));  /* never collect this name */
  for (i=0; i<NUM_RESERVED; i++) {
    TString *ts = luaS_new(L, luaX_tokens[i]);
    luaC_fix(L, obj2gco(ts));  /* reserved words are never collected */
    ts->extra = cast_byte(i+1);  /* reserved word */
  }
}
Example #2
0
void luaT_init (lua_State *L) {
  constexpr static const char *const luaT_eventname[] = {  /* ORDER TM */
    "__index", 
    "__newindex",
    "__gc", 
    "__mode", 
    "__len", 
    "__eq",
    "__add", 
    "__sub", 
    "__mul", 
    "__mod", 
    "__pow",
    "__div", 
    "__idiv",
    "__band", 
    "__bor", 
    "__bxor", 
    "__shl", 
    "__shr",
    "__unm", 
    "__bnot", 
    "__lt", 
    "__le",
    "__concat", 
    "__call"
  };
  int i;
  for (i=0; i<TM_N; ++i) {
    G(L)->tmname[i] = luaS_new(L, luaT_eventname[i]);
    luaC_fix(L, obj2gco(G(L)->tmname[i]));  /* never collect these names */
  }
}
/*
** open parts of the state that may cause memory-allocation errors.
** ('g->version' != NULL flags that the state was completely build)
*/
static void f_luaopen (lua_State *L, void *ud) {
  global_State *g = G(L);
  UNUSED(ud);
  stack_init(L, L);  /* init stack */
  init_registry(L, g);
  luaS_resize(L, MINSTRTABSIZE);  /* initial size of string table */
  luaT_init(L);
  luaX_init(L);
  /* pre-create memory-error message */
  g->memerrmsg = luaS_newliteral(L, MEMERRMSG);
  luaC_fix(L, obj2gco(g->memerrmsg));  /* it should never be collected */
  g->gcrunning = 1;  /* allow gc */
  g->version = lua_version(NULL);
  luai_userstateopen(L);
}