mirror of https://github.com/lua/lua
Lua does not need all those different types...
This commit is contained in:
parent
943c82b376
commit
572a69df78
4
lgc.c
4
lgc.c
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
** $Id: lgc.c,v 1.170 2003/03/18 12:50:04 roberto Exp roberto $
|
** $Id: lgc.c,v 1.171 2003/04/03 13:35:34 roberto Exp roberto $
|
||||||
** Garbage Collector
|
** Garbage Collector
|
||||||
** See Copyright Notice in lua.h
|
** See Copyright Notice in lua.h
|
||||||
*/
|
*/
|
||||||
|
@ -389,7 +389,7 @@ static void sweepstrings (lua_State *L, int all) {
|
||||||
|
|
||||||
static void checkSizes (lua_State *L) {
|
static void checkSizes (lua_State *L) {
|
||||||
/* check size of string hash */
|
/* check size of string hash */
|
||||||
if (G(L)->strt.nuse < cast(ls_nstr, G(L)->strt.size/4) &&
|
if (G(L)->strt.nuse < cast(lu_int32, G(L)->strt.size/4) &&
|
||||||
G(L)->strt.size > MINSTRTABSIZE*2)
|
G(L)->strt.size > MINSTRTABSIZE*2)
|
||||||
luaS_resize(L, G(L)->strt.size/2); /* table is too big */
|
luaS_resize(L, G(L)->strt.size/2); /* table is too big */
|
||||||
/* check size of buffer */
|
/* check size of buffer */
|
||||||
|
|
31
llimits.h
31
llimits.h
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
** $Id: llimits.h,v 1.51 2002/11/25 17:47:13 roberto Exp roberto $
|
** $Id: llimits.h,v 1.52 2003/02/20 19:33:23 roberto Exp roberto $
|
||||||
** Limits, basic types, and some other `installation-dependent' definitions
|
** Limits, basic types, and some other `installation-dependent' definitions
|
||||||
** See Copyright Notice in lua.h
|
** See Copyright Notice in lua.h
|
||||||
*/
|
*/
|
||||||
|
@ -40,21 +40,26 @@
|
||||||
** any machine, but may not be optimal.
|
** any machine, but may not be optimal.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* an unsigned integer to hold hash values */
|
|
||||||
typedef unsigned int lu_hash;
|
|
||||||
/* its signed equivalent */
|
|
||||||
typedef int ls_hash;
|
|
||||||
|
|
||||||
/* an unsigned integer big enough to count the total memory used by Lua; */
|
/*
|
||||||
/* it should be at least as large as size_t */
|
** an unsigned integer with at least 32 bits
|
||||||
typedef unsigned long lu_mem;
|
*/
|
||||||
|
#ifndef LUA_UINT32
|
||||||
|
#define LUA_UINT32 unsigned long
|
||||||
|
#endif
|
||||||
|
|
||||||
|
typedef LUA_UINT32 lu_int32;
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
** an unsigned integer big enough to count the total memory used by Lua;
|
||||||
|
** it should be at least as large as `size_t'
|
||||||
|
*/
|
||||||
|
typedef lu_int32 lu_mem;
|
||||||
|
|
||||||
#define MAX_LUMEM ULONG_MAX
|
#define MAX_LUMEM ULONG_MAX
|
||||||
|
|
||||||
|
|
||||||
/* an integer big enough to count the number of strings in use */
|
|
||||||
typedef long ls_nstr;
|
|
||||||
|
|
||||||
/* chars used as small naturals (so that `char' is reserved for characters) */
|
/* chars used as small naturals (so that `char' is reserved for characters) */
|
||||||
typedef unsigned char lu_byte;
|
typedef unsigned char lu_byte;
|
||||||
|
|
||||||
|
@ -69,7 +74,7 @@ typedef unsigned char lu_byte;
|
||||||
** this is for hashing only; there is no problem if the integer
|
** this is for hashing only; there is no problem if the integer
|
||||||
** cannot hold the whole pointer value
|
** cannot hold the whole pointer value
|
||||||
*/
|
*/
|
||||||
#define IntPoint(p) ((lu_hash)(p))
|
#define IntPoint(p) ((unsigned int)(p))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -114,7 +119,7 @@ typedef LUA_UACNUMBER l_uacNumber;
|
||||||
** type for virtual-machine instructions
|
** type for virtual-machine instructions
|
||||||
** must be an unsigned with (at least) 4 bytes (see details in lopcodes.h)
|
** must be an unsigned with (at least) 4 bytes (see details in lopcodes.h)
|
||||||
*/
|
*/
|
||||||
typedef unsigned long Instruction;
|
typedef lu_int32 Instruction;
|
||||||
|
|
||||||
|
|
||||||
/* maximum depth for calls (unsigned short) */
|
/* maximum depth for calls (unsigned short) */
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
** $Id: lobject.h,v 1.158 2003/02/18 16:02:56 roberto Exp roberto $
|
** $Id: lobject.h,v 1.159 2003/03/18 12:50:04 roberto Exp roberto $
|
||||||
** Type definitions for Lua objects
|
** Type definitions for Lua objects
|
||||||
** See Copyright Notice in lua.h
|
** See Copyright Notice in lua.h
|
||||||
*/
|
*/
|
||||||
|
@ -181,7 +181,7 @@ typedef union TString {
|
||||||
struct {
|
struct {
|
||||||
CommonHeader;
|
CommonHeader;
|
||||||
lu_byte reserved;
|
lu_byte reserved;
|
||||||
lu_hash hash;
|
unsigned int hash;
|
||||||
size_t len;
|
size_t len;
|
||||||
} tsv;
|
} tsv;
|
||||||
} TString;
|
} TString;
|
||||||
|
|
4
lstate.h
4
lstate.h
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
** $Id: lstate.h,v 1.108 2002/11/25 17:47:13 roberto Exp roberto $
|
** $Id: lstate.h,v 1.109 2003/02/27 11:52:30 roberto Exp roberto $
|
||||||
** Global State
|
** Global State
|
||||||
** See Copyright Notice in lua.h
|
** See Copyright Notice in lua.h
|
||||||
*/
|
*/
|
||||||
|
@ -64,7 +64,7 @@ struct lua_longjmp; /* defined in ldo.c */
|
||||||
|
|
||||||
typedef struct stringtable {
|
typedef struct stringtable {
|
||||||
GCObject **hash;
|
GCObject **hash;
|
||||||
ls_nstr nuse; /* number of elements */
|
lu_int32 nuse; /* number of elements */
|
||||||
int size;
|
int size;
|
||||||
} stringtable;
|
} stringtable;
|
||||||
|
|
||||||
|
|
11
lstring.c
11
lstring.c
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
** $Id: lstring.c,v 1.77 2002/11/13 11:32:26 roberto Exp roberto $
|
** $Id: lstring.c,v 1.78 2002/12/04 17:38:31 roberto Exp roberto $
|
||||||
** String table (keeps all strings handled by Lua)
|
** String table (keeps all strings handled by Lua)
|
||||||
** See Copyright Notice in lua.h
|
** See Copyright Notice in lua.h
|
||||||
*/
|
*/
|
||||||
|
@ -34,7 +34,7 @@ void luaS_resize (lua_State *L, int newsize) {
|
||||||
GCObject *p = tb->hash[i];
|
GCObject *p = tb->hash[i];
|
||||||
while (p) { /* for each node in the list */
|
while (p) { /* for each node in the list */
|
||||||
GCObject *next = p->gch.next; /* save next */
|
GCObject *next = p->gch.next; /* save next */
|
||||||
lu_hash h = gcotots(p)->tsv.hash;
|
unsigned int h = gcotots(p)->tsv.hash;
|
||||||
int h1 = lmod(h, newsize); /* new position */
|
int h1 = lmod(h, newsize); /* new position */
|
||||||
lua_assert(cast(int, h%newsize) == lmod(h, newsize));
|
lua_assert(cast(int, h%newsize) == lmod(h, newsize));
|
||||||
p->gch.next = newhash[h1]; /* chain it */
|
p->gch.next = newhash[h1]; /* chain it */
|
||||||
|
@ -48,7 +48,8 @@ void luaS_resize (lua_State *L, int newsize) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static TString *newlstr (lua_State *L, const char *str, size_t l, lu_hash h) {
|
static TString *newlstr (lua_State *L, const char *str, size_t l,
|
||||||
|
unsigned int h) {
|
||||||
TString *ts = cast(TString *, luaM_malloc(L, sizestring(l)));
|
TString *ts = cast(TString *, luaM_malloc(L, sizestring(l)));
|
||||||
stringtable *tb;
|
stringtable *tb;
|
||||||
ts->tsv.len = l;
|
ts->tsv.len = l;
|
||||||
|
@ -63,7 +64,7 @@ static TString *newlstr (lua_State *L, const char *str, size_t l, lu_hash h) {
|
||||||
ts->tsv.next = tb->hash[h]; /* chain new entry */
|
ts->tsv.next = tb->hash[h]; /* chain new entry */
|
||||||
tb->hash[h] = valtogco(ts);
|
tb->hash[h] = valtogco(ts);
|
||||||
tb->nuse++;
|
tb->nuse++;
|
||||||
if (tb->nuse > cast(ls_nstr, tb->size) && tb->size <= MAX_INT/2)
|
if (tb->nuse > cast(lu_int32, tb->size) && tb->size <= MAX_INT/2)
|
||||||
luaS_resize(L, tb->size*2); /* too crowded */
|
luaS_resize(L, tb->size*2); /* too crowded */
|
||||||
return ts;
|
return ts;
|
||||||
}
|
}
|
||||||
|
@ -71,7 +72,7 @@ static TString *newlstr (lua_State *L, const char *str, size_t l, lu_hash h) {
|
||||||
|
|
||||||
TString *luaS_newlstr (lua_State *L, const char *str, size_t l) {
|
TString *luaS_newlstr (lua_State *L, const char *str, size_t l) {
|
||||||
GCObject *o;
|
GCObject *o;
|
||||||
lu_hash h = (lu_hash)l; /* seed */
|
unsigned int h = cast(unsigned int, l); /* seed */
|
||||||
size_t step = (l>>5)+1; /* if string is too long, don't hash all its chars */
|
size_t step = (l>>5)+1; /* if string is too long, don't hash all its chars */
|
||||||
size_t l1;
|
size_t l1;
|
||||||
for (l1=l; l1>=step; l1-=step) /* compute hash */
|
for (l1=l; l1>=step; l1-=step) /* compute hash */
|
||||||
|
|
4
ltable.c
4
ltable.c
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
** $Id: ltable.c,v 1.132 2003/04/03 13:35:34 roberto Exp roberto $
|
** $Id: ltable.c,v 1.133 2003/04/28 13:31:46 roberto Exp roberto $
|
||||||
** Lua tables (hash)
|
** Lua tables (hash)
|
||||||
** See Copyright Notice in lua.h
|
** See Copyright Notice in lua.h
|
||||||
*/
|
*/
|
||||||
|
@ -85,7 +85,7 @@ static Node *hashnum (const Table *t, lua_Number n) {
|
||||||
lua_assert(sizeof(a) <= sizeof(n));
|
lua_assert(sizeof(a) <= sizeof(n));
|
||||||
memcpy(a, &n, sizeof(a));
|
memcpy(a, &n, sizeof(a));
|
||||||
for (i = 1; i < numints; i++) a[0] += a[i];
|
for (i = 1; i < numints; i++) a[0] += a[i];
|
||||||
return hashmod(t, cast(lu_hash, a[0]));
|
return hashmod(t, a[0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue