Example #1
0
LUA_API lua_State *lua_newstate (lua_Alloc f, void *ud) {
  int i;
  lua_State *L;
  global_State *g;
  void *l = (*f)(ud, NULL, 0, state_size(LG));
  if (l == NULL) return NULL;
  L = tostate(l);
  g = &((LG *)L)->g;
  L->next = NULL;
  L->tt = LUA_TTHREAD;
  g->currentwhite = bit2mask(WHITE0BIT, FIXEDBIT);
  L->marked = luaC_white(g);
  set2bits(L->marked, FIXEDBIT, SFIXEDBIT);
  preinit_state(L, g);
  g->frealloc = f;
  g->ud = ud;
  g->mainthread = L;
  g->uvhead.u.l.prev = &g->uvhead;
  g->uvhead.u.l.next = &g->uvhead;
  g->GCthreshold = 0;  /* mark it as unfinished state */
  g->strt.size = 0;
  g->strt.nuse = 0;
  g->strt.hash = NULL;
  setnilvalue(registry(L));
  luaZ_initbuffer(L, &g->buff);
  g->panic = NULL;
  g->gcstate = GCSpause;
  g->rootgc = obj2gco(L);
  g->sweepstrgc = 0;
  g->sweepgc = &g->rootgc;
  g->gray = NULL;
  g->grayagain = NULL;
  g->weak = NULL;
  g->tmudata = NULL;
  g->totalbytes = sizeof(LG);
  g->gcpause = LUAI_GCPAUSE;
  g->gcstepmul = LUAI_GCMUL;
  g->gcdept = 0;
  for (i=0; i<NUM_TAGS; i++) g->mt[i] = NULL;
  if (luaD_rawrunprotected(L, f_luaopen, NULL) != 0) {
    /* memory allocation error: free partial state */
    close_state(L);
    L = NULL;
  }
  else
    luai_userstateopen(L);

  /* SPRING additions, default to disabled functions */
  g->fopen_func  = NULL;
  g->popen_func  = NULL;
  g->pclose_func = NULL;
  g->system_func = NULL;
  g->remove_func = NULL;
  g->rename_func = NULL;

  return L;
}
Example #2
0
lua_State *luaE_newthread (lua_State *L) {
  lua_State *L1 = mallocstate(L);
  luaC_link(L, valtogco(L1), LUA_TTHREAD);
  preinit_state(L1);
  L1->l_G = L->l_G;
  stack_init(L1, L);  /* init stack */
  setobj2n(gt(L1), gt(L));  /* share table of globals */
  return L1;
}
Example #3
0
LUA_API lua_State *lua_newstate () {
	int i;
	lua_State *L;
	global_State *g;
	LG *l = cast(LG *, l_alloc(NULL, NULL, LUA_TTHREAD, sizeof(LG)));
	if (l == NULL) return NULL;
	L = &l->l.l;
	g = &l->g;
	L->next = NULL;
	L->tt = LUA_TTHREAD;
	/*g->currentwhite = bit2mask(WHITE0BIT, FIXEDBIT);
	L->marked = luaC_white(g);
	g->gckind = KGC_NORMAL;*/
	preinit_state(L, g);
	g->frealloc = l_alloc;
	g->mainthread = L;
	//g->seed = makeseed(L);
	//g->uvhead.u.l.prev = &g->uvhead;
	//g->uvhead.u.l.next = &g->uvhead;
	//g->gcrunning = 0;  /* no GC while building state */
	//g->GCestimate = 0;
	g->strt.size = 0;
	g->strt.nuse = 0;
	g->strt.hash = NULL;
	setnilvalue(&g->l_registry);
	/*luaZ_initbuffer(L, &g->buff);
	g->panic = NULL;
	g->version = lua_version(NULL);
	g->gcstate = GCSpause;
	g->allgc = NULL;
	g->finobj = NULL;
	g->tobefnz = NULL;
	g->sweepgc = g->sweepfin = NULL;
	g->gray = g->grayagain = NULL;
	g->weak = g->ephemeron = g->allweak = NULL;*/
	g->totalbytes = sizeof(LG);
	/*g->GCdebt = 0;
	g->gcpause = LUAI_GCPAUSE;
	g->gcmajorinc = LUAI_GCMAJOR;
	g->gcstepmul = LUAI_GCMUL;
	for (i=0; i < LUA_NUMTAGS; i++) g->mt[i] = NULL;*/
	//if (luaD_rawrunprotected(L, f_luaopen, NULL) != LUA_OK) {
	//	/* memory allocation error: free partial state */
	//	close_state(L);
	//	L = NULL;
	//}
	//else
	//	luai_userstateopen(L);

	f_luaopen(L, NULL);

	return L;
}
Example #4
0
lua_State *luaE_newthread (lua_State *L) {
  lua_State *L1 = tostate(luaM_malloc(L, state_size(lua_State)));
  luaC_link(L, obj2gco(L1), LUA_TTHREAD);
  preinit_state(L1, G(L));
  stack_init(L1, L);  /* init stack */
  setobj2n(L, gt(L1), gt(L));  /* share table of globals */
  L1->hookmask = L->hookmask;
  L1->basehookcount = L->basehookcount;
  L1->hook = L->hook;
  resethookcount(L1);
  lua_assert(iswhite(obj2gco(L1)));
  return L1;
}
Example #5
0
KILLA_API killa_State *killa_newstate (killa_Alloc f, void *ud) {
  int i;
  killa_State *L;
  killa_GlobalState *g;
  LG *l = killa_cast(LG *, (*f)(ud, NULL, KILLA_TTHREAD, sizeof(LG)));
  if (l == NULL) return NULL;
  L = &l->l.l;
  g = &l->g;
  L->next = NULL;
  L->tt = KILLA_TTHREAD;
  g->currentwhite = killa_bit2mask(KILLA_WHITE0BIT, KILLA_FIXEDBIT);
  L->marked = killaC_white(g);
  g->gckind = KILLA_KGC_NORMAL;
  preinit_state(L, g);
  g->frealloc = f;
  g->ud = ud;
  g->mainthread = L;
  g->uvhead.u.l.prev = &g->uvhead;
  g->uvhead.u.l.next = &g->uvhead;
  g->gcrunning = 0;  /* no GC while building state */
  g->lastmajormem = 0;
  g->strt.size = 0;
  g->strt.nuse = 0;
  g->strt.hash = NULL;
  killa_setnilvalue(&g->l_registry);
  killaZ_initbuffer(L, &g->buff);
  g->panic = NULL;
  g->version = killa_version(NULL);
  g->gcstate = killa_GCSpause;
  g->allgc = NULL;
  g->finobj = NULL;
  g->tobefnz = NULL;
  g->gray = g->grayagain = NULL;
  g->weak = g->ephemeron = g->allweak = NULL;
  g->totalbytes = sizeof(LG);
  g->GCdebt = 0;
  g->gcpause = KILLAI_GCPAUSE;
  g->gcmajorinc = KILLAI_GCMAJOR;
  g->gcstepmul = KILLAI_GCMUL;
  for (i=0; i < KILLA_NUMTAGS; i++) g->mt[i] = NULL;
  if (killaD_rawrunprotected(L, f_killaopen, NULL) != KILLA_OK) {
    /* memory allocation error: free partial state */
    close_state(L);
    L = NULL;
  }
  else
    killai_userstateopen(L);
  return L;
}
Example #6
0
lua_State *luaE_newthread (lua_State *L) {
  lua_State *L1 = tostate(luaM_malloc(L, state_size(lua_State)));
  luaC_link(L, obj2gco(L1), LUA_TTHREAD);
  setthvalue(L, L->top, L1); /* put thread on stack */
  incr_top(L);
  preinit_state(L1, G(L));
  stack_init(L1, L);  /* init stack */
  setobj2n(L, gt(L1), gt(L));  /* share table of globals */
  L1->hookmask = L->hookmask;
  L1->basehookcount = L->basehookcount;
  L1->hook = L->hook;
  resethookcount(L1);
  lua_assert(!isdead(G(L), obj2gco(L1)));
  L->top--; /* remove thread from stack */
  return L1;
}
Example #7
0
LUA_API lua_State *lua_open (void) {
  lua_State *L = mallocstate(NULL);
  if (L) {  /* allocation OK? */
    L->tt = LUA_TTHREAD;
    L->marked = 0;
    L->next = L->gclist = NULL;
    preinit_state(L);
    L->l_G = NULL;
    if (luaD_rawrunprotected(L, f_luaopen, NULL) != 0) {
      /* memory allocation error: free partial state */
      close_state(L);
      L = NULL;
    }
  }
  lua_userstateopen(L);
  return L;
}
Example #8
0
LUA_API lua_State *lua_newthread (lua_State *L) {
  lua_State *L1;
  lua_lock(L);
  luaC_checkGC(L);
  L1 = &luaC_newobj(L, LUA_TTHREAD, sizeof(LX), NULL, offsetof(LX, l))->th;
  setthvalue(L, L->top, L1);
  api_incr_top(L);
  preinit_state(L1, G(L));
  L1->hookmask = L->hookmask;
  L1->basehookcount = L->basehookcount;
  L1->hook = L->hook;
  resethookcount(L1);
  luai_userstatethread(L, L1);
  stack_init(L1, L);  /* init stack */
  lua_unlock(L);
  return L1;
}
Example #9
0
KILLA_API killa_State *killa_newthread (killa_State *L) {
  killa_State *L1;
  killa_lock(L);
  killaC_checkGC(L);
  L1 = &killaC_newobj(L, KILLA_TTHREAD, sizeof(LX), NULL, offsetof(LX, l))->th;
  killa_setthvalue(L, L->top, L1);
  killaA_incr_top(L);
  preinit_state(L1, KILLA_G(L));
  L1->hookmask = L->hookmask;
  L1->basehookcount = L->basehookcount;
  L1->hook = L->hook;
  killa_resethookcount(L1);
  killai_userstatethread(L, L1);
  stack_init(L1, L);  /* init stack */
  killa_unlock(L);
  return L1;
}
Example #10
0
LUA_API lua_State *lua_open (void) {
  lua_State *L;
  global_State globalState;
  lua_State luaState;
#ifdef _DEBUG
  luaState.allocName = "Lua_lua_State";
#endif _DEBUG
  luaState.l_G = &globalState;
  globalState.reallocFunc = luaHelper_Realloc;
  globalState.freeFunc = luaHelper_Free;
  globalState.memData = luaHelper_memData;
  globalState.nblocks = sizeof(lua_State) + sizeof(global_State);	// Bogus.
  L = mallocstate(&luaState);
  if (L) {  /* allocation OK? */
    L->tt = LUA_TTHREAD;
    L->marked = 0;
    L->next = NULL;
#if LUA_REFCOUNT
	L->prev = NULL;
	L->gclist_head.next = (GCObject*)&L->gclist_tail;
	L->gclist_head.prev = NULL;
	L->gclist_tail.next = NULL;
	L->gclist_tail.prev = (GCObject*)&L->gclist_head;
	L->gclist_head.tt = LUA_TNIL;
    L->gclist_head.marked = 0;
    L->gclist_head.ref = 0;
	L->gclist_tail.tt = LUA_TNIL;
    L->gclist_tail.marked = 0;
    L->gclist_tail.ref = 0;
	L->ref = 0;
#else !LUA_REFCOUNT
	L->gclist = NULL;
#endif LUA_REFCOUNT
    preinit_state(L);
    L->l_G = NULL;
    if (luaD_rawrunprotected(L, f_luaopen, NULL) != 0) {
      /* memory allocation error: free partial state */
      close_state(L);
      L = NULL;
    }
  }
  lua_userstateopen(L);
  return L;
}
Example #11
0
lua_State *luaE_newthread (lua_State *L) {
  lua_State *L1 = mallocstate(L);
  luaC_link(L, valtogco(L1), LUA_TTHREAD);
  preinit_state(L1);
  L1->l_G = L->l_G;
#if LUA_REFCOUNT
  L1->gclist_head.next = (GCObject*)&L->gclist_tail;
  L1->gclist_head.prev = NULL;
  L1->gclist_tail.next = NULL;
  L1->gclist_tail.prev = (GCObject*)&L->gclist_head;
  L1->gclist_head.tt = LUA_TNIL;
  L1->gclist_head.marked = 0;
  L1->gclist_head.ref = 0;
  L1->gclist_tail.tt = LUA_TNIL;
  L1->gclist_tail.marked = 0;
  L1->gclist_tail.ref = 0;
  L1->ref = 0;
#endif LUA_REFCOUNT
  stack_init(L1, L);  /* init stack */
  setobj2n(gt(L1), gt(L));  /* share table of globals */
  return L1;
}
Example #12
0
LUA_API lua_State *lua_newstate (lua_Alloc f, void *ud) {
  int i;
  lua_State *L;
  global_State *g;
#if LUAPLUS_EXTENSIONS
  void *l = (*f)(ud, NULL, 0, state_size(LG), "lua_State", 0);
#else
  void *l = (*f)(ud, NULL, 0, state_size(LG));
#endif /* LUAPLUS_EXTENSIONS */
  if (l == NULL) return NULL;
  L = tostate(l);
  g = &((LG *)L)->g;
  L->next = NULL;
#if LUA_REFCOUNT
  L->prev = NULL;
#endif /* LUA_REFCOUNT */
  L->tt = LUA_TTHREAD;
  g->currentwhite = bit2mask(WHITE0BIT, FIXEDBIT);
  L->marked = luaC_white(g);
  set2bits(L->marked, FIXEDBIT, SFIXEDBIT);
  preinit_state(L, g);
  g->frealloc = f;
  g->ud = ud;
  g->mainthread = L;
  g->uvhead.u.l.prev = &g->uvhead;
  g->uvhead.u.l.next = &g->uvhead;
  g->GCthreshold = 0;  /* mark it as unfinished state */
  g->strt.size = 0;
  g->strt.nuse = 0;
  g->strt.hash = NULL;
#if LUA_REFCOUNT    
  setnilvalue2n(L, registry(L));
#else
  setnilvalue(registry(L));
#endif /* LUA_REFCOUNT */
  luaZ_initbuffer(L, &g->buff);
  g->panic = NULL;
  g->gcstate = GCSpause;
  g->rootgc = obj2gco(L);
  g->sweepstrgc = 0;
  g->sweepgc = &g->rootgc;
  g->gray = NULL;
  g->grayagain = NULL;
  g->weak = NULL;
  g->tmudata = NULL;
  g->totalbytes = sizeof(LG);
  g->gcpause = LUAI_GCPAUSE;
  g->gcstepmul = LUAI_GCMUL;
  g->gcdept = 0;
#if LUAPLUS_EXTENSIONS
  g->loadNotifyFunction = NULL;
  g->userGCFunction = NULL;
  g->gchead_next = &g->gctail_next;
  g->gchead_prev = NULL;
  g->gctail_next = NULL;
  g->gctail_prev = &g->gchead_next;
#endif /* LUAPLUS_EXTENSIONS */
  for (i=0; i<NUM_TAGS; i++) g->mt[i] = NULL;
  if (luaD_rawrunprotected(L, f_luaopen, NULL) != 0) {
    /* memory allocation error: free partial state */
    close_state(L);
    L = NULL;
  }
  else
    luai_userstateopen(L);
  return L;
}