summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoberto Ierusalimschy <roberto@inf.puc-rio.br>2001-02-01 15:40:48 -0200
committerRoberto Ierusalimschy <roberto@inf.puc-rio.br>2001-02-01 15:40:48 -0200
commite506b864cdc522ed7bf33e81d785fcfbd40a0368 (patch)
treec62865ee026136cd8784658110e8928127ad276c
parent9a231afa9721e87ae5f9790dedcb73cd58472a3f (diff)
downloadlua-github-e506b864cdc522ed7bf33e81d785fcfbd40a0368.tar.gz
no need for tags in boxed values :-(
-rw-r--r--ldo.c3
-rw-r--r--lfunc.c3
-rw-r--r--lgc.c4
-rw-r--r--lobject.h20
-rw-r--r--lstate.h9
-rw-r--r--lstring.c4
-rw-r--r--ltable.c3
7 files changed, 17 insertions, 29 deletions
diff --git a/ldo.c b/ldo.c
index 67b8f5c5..d98ab5bd 100644
--- a/ldo.c
+++ b/ldo.c
@@ -1,5 +1,5 @@
/*
-** $Id: ldo.c,v 1.118 2001/01/29 15:35:17 roberto Exp roberto $
+** $Id: ldo.c,v 1.119 2001/01/29 19:34:02 roberto Exp roberto $
** Stack and Call structure of Lua
** See Copyright Notice in lua.h
*/
@@ -172,7 +172,6 @@ void luaD_call (lua_State *L, StkId func, int nResults) {
setclvalue(func, tm); /* tag method is the new function to be called */
}
cl = clvalue(func);
- ci.v.ttype = LUA_TMARK;
ci.func = cl;
setivalue(func, &ci);
callhook = L->callhook;
diff --git a/lfunc.c b/lfunc.c
index 4e7facb0..0a145c67 100644
--- a/lfunc.c
+++ b/lfunc.c
@@ -1,5 +1,5 @@
/*
-** $Id: lfunc.c,v 1.37 2001/01/19 13:20:30 roberto Exp roberto $
+** $Id: lfunc.c,v 1.38 2001/01/29 19:34:02 roberto Exp roberto $
** Auxiliary functions to manipulate prototypes and closures
** See Copyright Notice in lua.h
*/
@@ -19,7 +19,6 @@
Closure *luaF_newclosure (lua_State *L, int nelems) {
Closure *c = (Closure *)luaM_malloc(L, sizeclosure(nelems));
- c->v.ttype = LUA_TFUNCTION;
c->next = G(L)->rootcl;
G(L)->rootcl = c;
c->mark = c;
diff --git a/lgc.c b/lgc.c
index 182f6048..90c8165a 100644
--- a/lgc.c
+++ b/lgc.c
@@ -1,5 +1,5 @@
/*
-** $Id: lgc.c,v 1.82 2001/01/29 17:16:58 roberto Exp roberto $
+** $Id: lgc.c,v 1.83 2001/01/29 19:34:02 roberto Exp roberto $
** Garbage Collector
** See Copyright Notice in lua.h
*/
@@ -66,8 +66,6 @@ static void marktable (GCState *st, Hash *h) {
static void markobject (GCState *st, TObject *o) {
- lua_assert(ttype(o) == LUA_TNUMBER ||
- ttype(o) == ((TValue *)(o->value.v))->ttype);
switch (ttype(o)) {
case LUA_TUSERDATA: case LUA_TSTRING:
strmark(tsvalue(o));
diff --git a/lobject.h b/lobject.h
index 78f3ba18..e1170615 100644
--- a/lobject.h
+++ b/lobject.h
@@ -1,5 +1,5 @@
/*
-** $Id: lobject.h,v 1.90 2001/01/29 17:16:58 roberto Exp roberto $
+** $Id: lobject.h,v 1.91 2001/01/29 19:34:02 roberto Exp roberto $
** Type definitions for Lua objects
** See Copyright Notice in lua.h
*/
@@ -41,13 +41,6 @@
#define is_T_MARK(t) (ttype(t) == LUA_TMARK)
-/*
-** tag at the start of all "boxed" Lua values
-*/
-typedef struct TValue {
- char ttype;
-} TValue;
-
typedef union {
void *v;
@@ -116,8 +109,6 @@ typedef struct lua_TObject {
#define TSPACK ((int)sizeof(int))
typedef struct TString {
- TValue v;
- unsigned char marked;
union {
struct { /* for strings */
luint32 hash;
@@ -129,6 +120,7 @@ typedef struct TString {
} d;
} u;
size_t len;
+ int marked;
struct TString *nexthash; /* chain for hash table */
char str[TSPACK]; /* variable length string!! must be the last field! */
} TString;
@@ -138,7 +130,6 @@ typedef struct TString {
** Function Prototypes
*/
typedef struct Proto {
- TValue v;
lua_Number *knum; /* numbers used by the function */
int sizeknum; /* size of `knum' */
struct TString **kstr; /* strings used by the function */
@@ -173,15 +164,14 @@ typedef struct LocVar {
** Closures
*/
typedef struct Closure {
- TValue v;
- char isC; /* 0 for Lua functions, 1 for C functions */
- short nupvalues;
+ int isC; /* 0 for Lua functions, 1 for C functions */
union {
lua_CFunction c; /* C functions */
struct Proto *l; /* Lua functions */
} f;
struct Closure *next;
struct Closure *mark; /* marked closures (point to itself when not marked) */
+ int nupvalues;
TObject upvalue[1];
} Closure;
@@ -198,7 +188,6 @@ typedef struct Node {
typedef struct Hash {
- TValue v;
Node *node;
int htag;
int size;
@@ -223,7 +212,6 @@ typedef struct Hash {
** informations about a call (for debugging)
*/
typedef struct CallInfo {
- TValue v;
struct Closure *func; /* function being called */
const Instruction **pc; /* current pc of called function */
int lastpc; /* last pc traced */
diff --git a/lstate.h b/lstate.h
index 8d25ab89..e4f52cec 100644
--- a/lstate.h
+++ b/lstate.h
@@ -1,5 +1,5 @@
/*
-** $Id: lstate.h,v 1.47 2001/01/25 16:45:36 roberto Exp roberto $
+** $Id: lstate.h,v 1.48 2001/01/26 11:45:51 roberto Exp roberto $
** Global State
** See Copyright Notice in lua.h
*/
@@ -32,6 +32,12 @@ extern int islocked;
#define LUA_UNLOCK
#endif
+/*
+** macro to allow the inclusion of user information in Lua state
+*/
+#ifndef LUA_USERSTATE
+#define LUA_USERSTATE
+#endif
typedef TObject *StkId; /* index to stack elements */
@@ -90,6 +96,7 @@ typedef struct global_State {
** "per thread" state
*/
struct lua_State {
+ LUA_USERSTATE
StkId top; /* first free slot in the stack */
StkId stack; /* stack base */
StkId stack_last; /* last free slot in the stack */
diff --git a/lstring.c b/lstring.c
index fbc56dd0..fe87f5c2 100644
--- a/lstring.c
+++ b/lstring.c
@@ -1,5 +1,5 @@
/*
-** $Id: lstring.c,v 1.53 2001/01/29 19:34:02 roberto Exp roberto $
+** $Id: lstring.c,v 1.54 2001/02/01 13:56:49 roberto Exp roberto $
** String table (keeps all strings handled by Lua)
** See Copyright Notice in lua.h
*/
@@ -76,7 +76,6 @@ TString *luaS_newlstr (lua_State *L, const char *str, size_t l) {
}
/* not found */
ts = (TString *)luaM_malloc(L, sizestring(l));
- ts->v.ttype = LUA_TSTRING;
ts->marked = 0;
ts->nexthash = NULL;
ts->len = l;
@@ -92,7 +91,6 @@ TString *luaS_newlstr (lua_State *L, const char *str, size_t l) {
TString *luaS_newudata (lua_State *L, size_t s, void *udata) {
union L_UTString *uts = (union L_UTString *)luaM_malloc(L, sizeudata(s));
TString *ts = &uts->ts;
- ts->v.ttype = LUA_TUSERDATA;
ts->marked = 0;
ts->nexthash = NULL;
ts->len = s;
diff --git a/ltable.c b/ltable.c
index 01b082e3..1e524f5f 100644
--- a/ltable.c
+++ b/ltable.c
@@ -1,5 +1,5 @@
/*
-** $Id: ltable.c,v 1.73 2001/01/29 19:34:02 roberto Exp roberto $
+** $Id: ltable.c,v 1.74 2001/01/30 19:48:37 roberto Exp roberto $
** Lua tables (hash)
** See Copyright Notice in lua.h
*/
@@ -98,7 +98,6 @@ static void setnodevector (lua_State *L, Hash *t, luint32 size) {
Hash *luaH_new (lua_State *L, int size) {
Hash *t = luaM_new(L, Hash);
- t->v.ttype = LUA_TTABLE;
t->htag = TagDefault;
t->next = G(L)->roottable;
G(L)->roottable = t;