aboutsummaryrefslogtreecommitdiff
path: root/tree.c
diff options
context:
space:
mode:
Diffstat (limited to 'tree.c')
-rw-r--r--tree.c23
1 files changed, 22 insertions, 1 deletions
diff --git a/tree.c b/tree.c
index f594824f..1afded62 100644
--- a/tree.c
+++ b/tree.c
@@ -3,7 +3,7 @@
3** TecCGraf - PUC-Rio 3** TecCGraf - PUC-Rio
4*/ 4*/
5 5
6char *rcs_tree="$Id: tree.c,v 1.20 1996/03/14 15:56:26 roberto Exp roberto $"; 6char *rcs_tree="$Id: tree.c,v 1.21 1997/02/11 11:35:05 roberto Exp roberto $";
7 7
8 8
9#include <string.h> 9#include <string.h>
@@ -14,6 +14,7 @@ char *rcs_tree="$Id: tree.c,v 1.20 1996/03/14 15:56:26 roberto Exp roberto $";
14#include "lex.h" 14#include "lex.h"
15#include "hash.h" 15#include "hash.h"
16#include "table.h" 16#include "table.h"
17#include "fallback.h"
17 18
18 19
19#define NUM_HASHS 64 20#define NUM_HASHS 64
@@ -45,6 +46,7 @@ static void initialize (void)
45 luaI_addReserved(); 46 luaI_addReserved();
46 luaI_initsymbol(); 47 luaI_initsymbol();
47 luaI_initconstant(); 48 luaI_initconstant();
49 luaI_initfallbacks();
48} 50}
49 51
50 52
@@ -120,6 +122,25 @@ TaggedString *lua_createstring (char *str)
120} 122}
121 123
122 124
125void luaI_strcallIM (void)
126{
127 int i;
128 Object o;
129 ttype(&o) = LUA_T_USERDATA;
130 for (i=0; i<NUM_HASHS; i++) {
131 stringtable *tb = &string_root[i];
132 int j;
133 for (j=0; j<tb->size; j++) {
134 TaggedString *t = tb->hash[j];
135 if (t != NULL && t->tag != LUA_T_STRING && t->marked == 0) {
136 tsvalue(&o) = t;
137 luaI_gcIM(&o);
138 }
139 }
140 }
141}
142
143
123/* 144/*
124** Garbage collection function. 145** Garbage collection function.
125** This function traverse the string list freeing unindexed strings 146** This function traverse the string list freeing unindexed strings