From 592a309177edc52847b1196969ad6d49ba21f4fb Mon Sep 17 00:00:00 2001 From: Roberto Ierusalimschy Date: Wed, 5 Dec 2001 18:15:18 -0200 Subject: tag system replaced by event tables --- lobject.h | 22 +++++----------------- 1 file changed, 5 insertions(+), 17 deletions(-) (limited to 'lobject.h') diff --git a/lobject.h b/lobject.h index beb6574f..bf07e3db 100644 --- a/lobject.h +++ b/lobject.h @@ -1,5 +1,5 @@ /* -** $Id: lobject.h,v 1.116 2001/11/06 21:41:53 roberto Exp $ +** $Id: lobject.h,v 1.1 2001/11/29 22:14:34 rieru Exp rieru $ ** Type definitions for Lua objects ** See Copyright Notice in lua.h */ @@ -31,15 +31,6 @@ #define NUM_TAGS 6 -/* -** extra tags: -** first is used locally when moving an upvalue from the stack to the heap; -** second prefixes upvalues in the heap -*/ -#define LUA_TUPVAL 6 -#define LUA_HEAPUPVAL 7 - - typedef union { union TString *ts; union Udata *u; @@ -122,17 +113,14 @@ typedef union TString { typedef union Udata { union L_Umaxalign dummy; /* ensures maximum alignment for `local' udata */ struct { - int tag; /* negative means `marked' (only during GC) */ + struct Table *eventtable; void *value; - size_t len; + size_t len; /* least bit reserved for gc mark */ union Udata *next; /* chain for list of all udata */ } uv; } Udata; -#define switchudatamark(u) ((u)->uv.tag = (-((u)->uv.tag+1))) -#define ismarkedudata(u) ((u)->uv.tag < 0) - /* @@ -175,7 +163,6 @@ typedef struct LocVar { typedef struct UpVal { TObject *v; /* points to stack or to its own value */ - int mark; struct UpVal *next; TObject value; /* the value (when closed) */ } UpVal; @@ -227,12 +214,13 @@ typedef struct Node { typedef struct Table { + struct Table *eventtable; TObject *array; /* array part */ Node *node; - int htag; int sizearray; /* size of `array' array */ lu_byte lsizenode; /* log2 of size of `node' array */ lu_byte weakmode; + unsigned short flags; /* 1<