aboutsummaryrefslogtreecommitdiff
path: root/tree.h
diff options
context:
space:
mode:
authorRoberto Ierusalimschy <roberto@inf.puc-rio.br>1994-11-23 12:32:00 -0200
committerRoberto Ierusalimschy <roberto@inf.puc-rio.br>1994-11-23 12:32:00 -0200
commitd490555ec9d5efb886211f735694d4e7dd0c166d (patch)
treef9b75cdc3a6d4132dddc884280ae218a7f9beb5c /tree.h
parentad0ec203f60df5e2f8a3b294c9e8c1014280b8f1 (diff)
downloadlua-d490555ec9d5efb886211f735694d4e7dd0c166d.tar.gz
lua-d490555ec9d5efb886211f735694d4e7dd0c166d.tar.bz2
lua-d490555ec9d5efb886211f735694d4e7dd0c166d.zip
garbage collection tag for strings organized in struct TaggedString
Diffstat (limited to 'tree.h')
-rw-r--r--tree.h23
1 files changed, 11 insertions, 12 deletions
diff --git a/tree.h b/tree.h
index e8accc7e..14bf9959 100644
--- a/tree.h
+++ b/tree.h
@@ -1,34 +1,33 @@
1/* 1/*
2** tree.h 2** tree.h
3** TecCGraf - PUC-Rio 3** TecCGraf - PUC-Rio
4** $Id: tree.h,v 1.4 1994/11/17 13:58:57 roberto Exp roberto $ 4** $Id: tree.h,v 1.5 1994/11/18 19:27:38 roberto Exp roberto $
5*/ 5*/
6 6
7#ifndef tree_h 7#ifndef tree_h
8#define tree_h 8#define tree_h
9 9
10#include "opcode.h"
11 10
11#define NOT_USED 0xFFFE
12 12
13#define UNMARKED_STRING 0xFFFF
14#define MARKED_STRING 0xFFFE
15#define MAX_WORD 0xFFFD
16 13
14typedef struct TaggedString
15{
16 char marked; /* for garbage collection */
17 char str[1]; /* \0 byte already reserved */
18} TaggedString;
17 19
18typedef struct TreeNode 20typedef struct TreeNode
19{ 21{
20 struct TreeNode *right; 22 struct TreeNode *right;
21 struct TreeNode *left; 23 struct TreeNode *left;
22 Word varindex; /* if this is a symbol */ 24 unsigned short varindex; /* != NOT_USED if this is a symbol */
23 Word constindex; /* if this is a constant; also used for garbage collection */ 25 unsigned short constindex; /* != NOT_USED if this is a constant */
24 char str[1]; /* \0 byte already reserved */ 26 TaggedString ts;
25} TreeNode; 27} TreeNode;
26 28
27 29
28#define indexstring(s) (*(((Word *)s)-1)) 30TaggedString *lua_createstring (char *str);
29
30
31char *lua_createstring (char *str);
32TreeNode *lua_constcreate (char *str); 31TreeNode *lua_constcreate (char *str);
33int lua_strcollector (void); 32int lua_strcollector (void);
34TreeNode *lua_varnext (char *n); 33TreeNode *lua_varnext (char *n);