浏览代码

Lua does not need all those different types...

Roberto Ierusalimschy 22 年之前
父节点
当前提交
572a69df78
共有 6 个文件被更改,包括 32 次插入26 次删除
  1. 2 2
      lgc.c
  2. 18 13
      llimits.h
  3. 2 2
      lobject.h
  4. 2 2
      lstate.h
  5. 6 5
      lstring.c
  6. 2 2
      ltable.c

+ 2 - 2
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
 ** See Copyright Notice in lua.h
 */
@@ -389,7 +389,7 @@ static void sweepstrings (lua_State *L, int all) {
 
 static void checkSizes (lua_State *L) {
   /* 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)
     luaS_resize(L, G(L)->strt.size/2);  /* table is too big */
   /* check size of buffer */

+ 18 - 13
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
 ** See Copyright Notice in lua.h
 */
@@ -40,20 +40,25 @@
 ** 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 */
-typedef unsigned long lu_mem;
+/*
+** an unsigned integer with at least 32 bits
+*/
+#ifndef LUA_UINT32
+#define LUA_UINT32	unsigned long
+#endif
+
+typedef LUA_UINT32 lu_int32;
 
-#define MAX_LUMEM	ULONG_MAX
 
+/*
+** 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
 
-/* 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) */
 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
 ** 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
 ** 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) */

+ 2 - 2
lobject.h

@@ -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
 ** See Copyright Notice in lua.h
 */
@@ -181,7 +181,7 @@ typedef union TString {
   struct {
     CommonHeader;
     lu_byte reserved;
-    lu_hash hash;
+    unsigned int hash;
     size_t len;
   } tsv;
 } TString;

+ 2 - 2
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
 ** See Copyright Notice in lua.h
 */
@@ -64,7 +64,7 @@ struct lua_longjmp;  /* defined in ldo.c */
 
 typedef struct stringtable {
   GCObject **hash;
-  ls_nstr nuse;  /* number of elements */
+  lu_int32 nuse;  /* number of elements */
   int size;
 } stringtable;
 

+ 6 - 5
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)
 ** See Copyright Notice in lua.h
 */
@@ -34,7 +34,7 @@ void luaS_resize (lua_State *L, int newsize) {
     GCObject *p = tb->hash[i];
     while (p) {  /* for each node in the list */
       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 */
       lua_assert(cast(int, h%newsize) == lmod(h, newsize));
       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)));
   stringtable *tb;
   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 */
   tb->hash[h] = valtogco(ts);
   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 */
   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) {
   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 l1;
   for (l1=l; l1>=step; l1-=step)  /* compute hash */

+ 2 - 2
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)
 ** 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));
   memcpy(a, &n, sizeof(a));
   for (i = 1; i < numints; i++) a[0] += a[i];
-  return hashmod(t, cast(lu_hash, a[0]));
+  return hashmod(t, a[0]);
 }