From b803c0600eb20f3d4e47fd7a9ceecb096abcd3c6 Mon Sep 17 00:00:00 2001 From: Roberto Ierusalimschy Date: Thu, 11 May 2000 15:57:19 -0300 Subject: [PATCH] details --- lgc.c | 8 ++++---- ltable.c | 21 +++++++-------------- 2 files changed, 11 insertions(+), 18 deletions(-) diff --git a/lgc.c b/lgc.c index 0a2cc596..f3ad12e7 100644 --- a/lgc.c +++ b/lgc.c @@ -1,5 +1,5 @@ /* -** $Id: lgc.c,v 1.48 2000/05/08 19:32:53 roberto Exp roberto $ +** $Id: lgc.c,v 1.49 2000/05/10 16:33:20 roberto Exp roberto $ ** Garbage Collector ** See Copyright Notice in lua.h */ @@ -62,7 +62,7 @@ static void closuremark (lua_State *L, Closure *f) { } -static void hashmark (lua_State *L, Hash *h) { +static void tablemark (lua_State *L, Hash *h) { if (!h->marked) { int i; h->marked = 1; @@ -99,7 +99,7 @@ static int markobject (lua_State *L, TObject *o) { strmark(L, tsvalue(o)); break; case TAG_TABLE: - hashmark(L, avalue(o)); + tablemark(L, avalue(o)); break; case TAG_LCLOSURE: case TAG_LMARK: protomark(L, clvalue(o)->f.l); @@ -206,7 +206,7 @@ static void collectstring (lua_State *L, int limit) { static void markall (lua_State *L) { travstack(L); /* mark stack objects */ - hashmark(L, L->gt); /* mark global variable values and names */ + tablemark(L, L->gt); /* mark global variable values and names */ travlock(L); /* mark locked objects */ luaT_travtagmethods(L, markobject); /* mark tag methods */ } diff --git a/ltable.c b/ltable.c index fb8b3dfe..3af51b62 100644 --- a/ltable.c +++ b/ltable.c @@ -1,5 +1,5 @@ /* -** $Id: ltable.c,v 1.40 2000/04/25 16:55:09 roberto Exp roberto $ +** $Id: ltable.c,v 1.41 2000/05/08 19:32:53 roberto Exp roberto $ ** Lua tables (hash) ** See Copyright Notice in lua.h */ @@ -122,20 +122,13 @@ int luaH_pos (lua_State *L, const Hash *t, const TObject *key) { } - -static Node *hashnodecreate (lua_State *L, int nhash) { - Node *v = luaM_newvector(L, nhash, Node); - int i; - for (i=0; inode = hashnodecreate(L, size); + int i; + t->node = luaM_newvector(L, size, Node); + for (i=0; inode[i].key) = ttype(&t->node[i].val) = TAG_NIL; + t->node[i].next = NULL; + } t->size = size; t->firstfree = &t->node[size-1]; /* first free position to be used */ L->nblocks += gcsize(L, size);