commit b803c0600eb20f3d4e47fd7a9ceecb096abcd3c6
parent 8ac0bbf64b93a672c6f29c2d96d22d727035e9ed
Author: Roberto Ierusalimschy <roberto@inf.puc-rio.br>
Date: Thu, 11 May 2000 15:56:57 -0300
details
Diffstat:
2 files changed, 10 insertions(+), 17 deletions(-)
diff --git 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
@@ -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);
+static void setnodevector (lua_State *L, Hash *t, int size) {
int i;
- for (i=0; i<nhash; i++) {
- ttype(&v[i].key) = ttype(&v[i].val) = TAG_NIL;
- v[i].next = NULL;
+ t->node = luaM_newvector(L, size, Node);
+ for (i=0; i<size; i++) {
+ ttype(&t->node[i].key) = ttype(&t->node[i].val) = TAG_NIL;
+ t->node[i].next = NULL;
}
- return v;
-}
-
-
-static void setnodevector (lua_State *L, Hash *t, int size) {
- t->node = hashnodecreate(L, size);
t->size = size;
t->firstfree = &t->node[size-1]; /* first free position to be used */
L->nblocks += gcsize(L, size);