aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoberto Ierusalimschy <roberto@inf.puc-rio.br>2024-06-20 13:43:33 -0300
committerRoberto Ierusalimschy <roberto@inf.puc-rio.br>2024-06-20 13:43:33 -0300
commit55ac40f859ad8e28fe71a8801d49f4a4140e8aa3 (patch)
tree1a1f02de45d28c7eb8976087ade773d7937bed14
parent97ef8e7bd40340d47a9789beb06f0128d7438d0a (diff)
downloadlua-55ac40f859ad8e28fe71a8801d49f4a4140e8aa3.tar.gz
lua-55ac40f859ad8e28fe71a8801d49f4a4140e8aa3.tar.bz2
lua-55ac40f859ad8e28fe71a8801d49f4a4140e8aa3.zip
Cleaning of llimits.h
Several definitions that don't need to be "global" (that is, that concerns only specific parts of the code) moved out of llimits.h, to more appropriate places.
-rw-r--r--lapi.h20
-rw-r--r--lcode.c6
-rw-r--r--ldo.c13
-rw-r--r--ldo.h21
-rw-r--r--ldump.c1
-rw-r--r--lgc.h8
-rw-r--r--llex.c7
-rw-r--r--llimits.h144
-rw-r--r--lobject.h3
-rw-r--r--lopcodes.h6
-rw-r--r--lparser.c2
-rw-r--r--lstate.c21
-rw-r--r--lstate.h11
-rw-r--r--lstring.c16
-rw-r--r--lstring.h11
-rw-r--r--luaconf.h5
-rw-r--r--lvm.c9
-rw-r--r--lzio.c1
-rw-r--r--makefile19
19 files changed, 159 insertions, 165 deletions
diff --git a/lapi.h b/lapi.h
index 757bf3d2..21be4a24 100644
--- a/lapi.h
+++ b/lapi.h
@@ -12,12 +12,32 @@
12#include "lstate.h" 12#include "lstate.h"
13 13
14 14
15#if defined(LUA_USE_APICHECK)
16#include <assert.h>
17#define api_check(l,e,msg) assert(e)
18#else /* for testing */
19#define api_check(l,e,msg) ((void)(l), lua_assert((e) && msg))
20#endif
21
22
23
15/* Increments 'L->top.p', checking for stack overflows */ 24/* Increments 'L->top.p', checking for stack overflows */
16#define api_incr_top(L) \ 25#define api_incr_top(L) \
17 (L->top.p++, api_check(L, L->top.p <= L->ci->top.p, "stack overflow")) 26 (L->top.p++, api_check(L, L->top.p <= L->ci->top.p, "stack overflow"))
18 27
19 28
20/* 29/*
30** macros that are executed whenever program enters the Lua core
31** ('lua_lock') and leaves the core ('lua_unlock')
32*/
33#if !defined(lua_lock)
34#define lua_lock(L) ((void) 0)
35#define lua_unlock(L) ((void) 0)
36#endif
37
38
39
40/*
21** If a call returns too many multiple returns, the callee may not have 41** If a call returns too many multiple returns, the callee may not have
22** stack space to accommodate all results. In this case, this macro 42** stack space to accommodate all results. In this case, this macro
23** increases its stack space ('L->ci->top.p'). 43** increases its stack space ('L->ci->top.p').
diff --git a/lcode.c b/lcode.c
index b2c0b64f..79c15132 100644
--- a/lcode.c
+++ b/lcode.c
@@ -331,14 +331,14 @@ static void savelineinfo (FuncState *fs, Proto *f, int line) {
331 int pc = fs->pc - 1; /* last instruction coded */ 331 int pc = fs->pc - 1; /* last instruction coded */
332 if (abs(linedif) >= LIMLINEDIFF || fs->iwthabs++ >= MAXIWTHABS) { 332 if (abs(linedif) >= LIMLINEDIFF || fs->iwthabs++ >= MAXIWTHABS) {
333 luaM_growvector(fs->ls->L, f->abslineinfo, fs->nabslineinfo, 333 luaM_growvector(fs->ls->L, f->abslineinfo, fs->nabslineinfo,
334 f->sizeabslineinfo, AbsLineInfo, MAX_INT, "lines"); 334 f->sizeabslineinfo, AbsLineInfo, INT_MAX, "lines");
335 f->abslineinfo[fs->nabslineinfo].pc = pc; 335 f->abslineinfo[fs->nabslineinfo].pc = pc;
336 f->abslineinfo[fs->nabslineinfo++].line = line; 336 f->abslineinfo[fs->nabslineinfo++].line = line;
337 linedif = ABSLINEINFO; /* signal that there is absolute information */ 337 linedif = ABSLINEINFO; /* signal that there is absolute information */
338 fs->iwthabs = 1; /* restart counter */ 338 fs->iwthabs = 1; /* restart counter */
339 } 339 }
340 luaM_growvector(fs->ls->L, f->lineinfo, pc, f->sizelineinfo, ls_byte, 340 luaM_growvector(fs->ls->L, f->lineinfo, pc, f->sizelineinfo, ls_byte,
341 MAX_INT, "opcodes"); 341 INT_MAX, "opcodes");
342 f->lineinfo[pc] = linedif; 342 f->lineinfo[pc] = linedif;
343 fs->previousline = line; /* last line saved */ 343 fs->previousline = line; /* last line saved */
344} 344}
@@ -383,7 +383,7 @@ int luaK_code (FuncState *fs, Instruction i) {
383 Proto *f = fs->f; 383 Proto *f = fs->f;
384 /* put new instruction in code array */ 384 /* put new instruction in code array */
385 luaM_growvector(fs->ls->L, f->code, fs->pc, f->sizecode, Instruction, 385 luaM_growvector(fs->ls->L, f->code, fs->pc, f->sizecode, Instruction,
386 MAX_INT, "opcodes"); 386 INT_MAX, "opcodes");
387 f->code[fs->pc++] = i; 387 f->code[fs->pc++] = i;
388 savelineinfo(fs, f, fs->ls->lastline); 388 savelineinfo(fs, f, fs->ls->lastline);
389 return fs->pc - 1; /* index of new instruction */ 389 return fs->pc - 1; /* index of new instruction */
diff --git a/ldo.c b/ldo.c
index 699a9d2a..cd6dded6 100644
--- a/ldo.c
+++ b/ldo.c
@@ -39,6 +39,19 @@
39 39
40 40
41/* 41/*
42** these macros allow user-specific actions when a thread is
43** resumed/yielded.
44*/
45#if !defined(luai_userstateresume)
46#define luai_userstateresume(L,n) ((void)L)
47#endif
48
49#if !defined(luai_userstateyield)
50#define luai_userstateyield(L,n) ((void)L)
51#endif
52
53
54/*
42** {====================================================== 55** {======================================================
43** Error-recovery functions 56** Error-recovery functions
44** ======================================================= 57** =======================================================
diff --git a/ldo.h b/ldo.h
index 4bc75030..b52a353f 100644
--- a/ldo.h
+++ b/ldo.h
@@ -23,10 +23,19 @@
23** 'condmovestack' is used in heavy tests to force a stack reallocation 23** 'condmovestack' is used in heavy tests to force a stack reallocation
24** at every check. 24** at every check.
25*/ 25*/
26
27#if !defined(HARDSTACKTESTS)
28#define condmovestack(L,pre,pos) ((void)0)
29#else
30/* realloc stack keeping its size */
31#define condmovestack(L,pre,pos) \
32 { int sz_ = stacksize(L); pre; luaD_reallocstack((L), sz_, 0); pos; }
33#endif
34
26#define luaD_checkstackaux(L,n,pre,pos) \ 35#define luaD_checkstackaux(L,n,pre,pos) \
27 if (l_unlikely(L->stack_last.p - L->top.p <= (n))) \ 36 if (l_unlikely(L->stack_last.p - L->top.p <= (n))) \
28 { pre; luaD_growstack(L, n, 1); pos; } \ 37 { pre; luaD_growstack(L, n, 1); pos; } \
29 else { condmovestack(L,pre,pos); } 38 else { condmovestack(L,pre,pos); }
30 39
31/* In general, 'pre'/'pos' are empty (nothing to save) */ 40/* In general, 'pre'/'pos' are empty (nothing to save) */
32#define luaD_checkstack(L,n) luaD_checkstackaux(L,n,(void)0,(void)0) 41#define luaD_checkstack(L,n) luaD_checkstackaux(L,n,(void)0,(void)0)
@@ -44,6 +53,16 @@
44 p = restorestack(L, t__)) /* 'pos' part: restore 'p' */ 53 p = restorestack(L, t__)) /* 'pos' part: restore 'p' */
45 54
46 55
56/*
57** Maximum depth for nested C calls, syntactical nested non-terminals,
58** and other features implemented through recursion in C. (Value must
59** fit in a 16-bit unsigned integer. It must also be compatible with
60** the size of the C stack.)
61*/
62#if !defined(LUAI_MAXCCALLS)
63#define LUAI_MAXCCALLS 200
64#endif
65
47 66
48/* type of protected functions, to be ran by 'runprotected' */ 67/* type of protected functions, to be ran by 'runprotected' */
49typedef void (*Pfunc) (lua_State *L, void *ud); 68typedef void (*Pfunc) (lua_State *L, void *ud);
diff --git a/ldump.c b/ldump.c
index ca708a41..a1e09856 100644
--- a/ldump.c
+++ b/ldump.c
@@ -15,6 +15,7 @@
15 15
16#include "lua.h" 16#include "lua.h"
17 17
18#include "lapi.h"
18#include "lgc.h" 19#include "lgc.h"
19#include "lobject.h" 20#include "lobject.h"
20#include "lstate.h" 21#include "lstate.h"
diff --git a/lgc.h b/lgc.h
index 72d318ca..5b71ddb9 100644
--- a/lgc.h
+++ b/lgc.h
@@ -211,6 +211,14 @@
211** 'condchangemem' is used only for heavy tests (forcing a full 211** 'condchangemem' is used only for heavy tests (forcing a full
212** GC cycle on every opportunity) 212** GC cycle on every opportunity)
213*/ 213*/
214
215#if !defined(HARDMEMTESTS)
216#define condchangemem(L,pre,pos) ((void)0)
217#else
218#define condchangemem(L,pre,pos) \
219 { if (gcrunning(G(L))) { pre; luaC_fullgc(L, 0); pos; } }
220#endif
221
214#define luaC_condGC(L,pre,pos) \ 222#define luaC_condGC(L,pre,pos) \
215 { if (G(L)->GCdebt <= 0) { pre; luaC_step(L); pos;}; \ 223 { if (G(L)->GCdebt <= 0) { pre; luaC_step(L); pos;}; \
216 condchangemem(L,pre,pos); } 224 condchangemem(L,pre,pos); }
diff --git a/llex.c b/llex.c
index 9f20d3c8..3446f4e0 100644
--- a/llex.c
+++ b/llex.c
@@ -32,6 +32,11 @@
32#define next(ls) (ls->current = zgetc(ls->z)) 32#define next(ls) (ls->current = zgetc(ls->z))
33 33
34 34
35/* minimum size for string buffer */
36#if !defined(LUA_MINBUFFER)
37#define LUA_MINBUFFER 32
38#endif
39
35 40
36#define currIsNewline(ls) (ls->current == '\n' || ls->current == '\r') 41#define currIsNewline(ls) (ls->current == '\n' || ls->current == '\r')
37 42
@@ -159,7 +164,7 @@ static void inclinenumber (LexState *ls) {
159 next(ls); /* skip '\n' or '\r' */ 164 next(ls); /* skip '\n' or '\r' */
160 if (currIsNewline(ls) && ls->current != old) 165 if (currIsNewline(ls) && ls->current != old)
161 next(ls); /* skip '\n\r' or '\r\n' */ 166 next(ls); /* skip '\n\r' or '\r\n' */
162 if (++ls->linenumber >= MAX_INT) 167 if (++ls->linenumber >= INT_MAX)
163 lexerror(ls, "chunk has too many lines", 0); 168 lexerror(ls, "chunk has too many lines", 0);
164} 169}
165 170
diff --git a/llimits.h b/llimits.h
index 2adbd32e..2954d2ef 100644
--- a/llimits.h
+++ b/llimits.h
@@ -46,15 +46,11 @@ typedef signed char ls_byte;
46#define MAX_SIZET ((size_t)(~(size_t)0)) 46#define MAX_SIZET ((size_t)(~(size_t)0))
47 47
48/* 48/*
49** Maximum size for strings and userdata visible for Lua (should be 49** Maximum size for strings and userdata visible for Lua; should be
50** representable in a lua_Integer) 50** representable as a lua_Integer and as a size_t.
51*/ 51*/
52#define MAX_SIZE (sizeof(size_t) < sizeof(lua_Integer) ? MAX_SIZET \ 52#define MAX_SIZE (sizeof(size_t) < sizeof(lua_Integer) ? MAX_SIZET \
53 : (size_t)(LUA_MAXINTEGER)) 53 : cast_sizet(LUA_MAXINTEGER))
54
55
56#define MAX_INT INT_MAX /* maximum value of an int */
57
58 54
59/* 55/*
60** floor of the log2 of the maximum signed value for integral type 't'. 56** floor of the log2 of the maximum signed value for integral type 't'.
@@ -119,15 +115,6 @@ typedef LUAI_UACINT l_uacInt;
119#define lua_longassert(c) ((void)0) 115#define lua_longassert(c) ((void)0)
120#endif 116#endif
121 117
122/*
123** assertion for checking API calls
124*/
125#if !defined(luai_apicheck)
126#define luai_apicheck(l,e) ((void)l, lua_assert(e))
127#endif
128
129#define api_check(l,e,msg) luai_apicheck(l,(e) && msg)
130
131 118
132/* macro to avoid warnings about unused variables */ 119/* macro to avoid warnings about unused variables */
133#if !defined(UNUSED) 120#if !defined(UNUSED)
@@ -196,8 +183,7 @@ typedef LUAI_UACINT l_uacInt;
196 183
197 184
198/* 185/*
199** type for virtual-machine instructions; 186** An unsigned with (at least) 4 bytes
200** must be an unsigned with (at least) 4 bytes (see details in lopcodes.h)
201*/ 187*/
202#if LUAI_IS32INT 188#if LUAI_IS32INT
203typedef unsigned int l_uint32; 189typedef unsigned int l_uint32;
@@ -205,107 +191,6 @@ typedef unsigned int l_uint32;
205typedef unsigned long l_uint32; 191typedef unsigned long l_uint32;
206#endif 192#endif
207 193
208typedef l_uint32 Instruction;
209
210
211
212/*
213** Maximum length for short strings, that is, strings that are
214** internalized. (Cannot be smaller than reserved words or tags for
215** metamethods, as these strings must be internalized;
216** #("function") = 8, #("__newindex") = 10.)
217*/
218#if !defined(LUAI_MAXSHORTLEN)
219#define LUAI_MAXSHORTLEN 40
220#endif
221
222
223/*
224** Initial size for the string table (must be power of 2).
225** The Lua core alone registers ~50 strings (reserved words +
226** metaevent keys + a few others). Libraries would typically add
227** a few dozens more.
228*/
229#if !defined(MINSTRTABSIZE)
230#define MINSTRTABSIZE 128
231#endif
232
233
234/*
235** Size of cache for strings in the API. 'N' is the number of
236** sets (better be a prime) and "M" is the size of each set (M == 1
237** makes a direct cache.)
238*/
239#if !defined(STRCACHE_N)
240#define STRCACHE_N 53
241#define STRCACHE_M 2
242#endif
243
244
245/* minimum size for string buffer */
246#if !defined(LUA_MINBUFFER)
247#define LUA_MINBUFFER 32
248#endif
249
250
251/*
252** Maximum depth for nested C calls, syntactical nested non-terminals,
253** and other features implemented through recursion in C. (Value must
254** fit in a 16-bit unsigned integer. It must also be compatible with
255** the size of the C stack.)
256*/
257#if !defined(LUAI_MAXCCALLS)
258#define LUAI_MAXCCALLS 200
259#endif
260
261
262/*
263** macros that are executed whenever program enters the Lua core
264** ('lua_lock') and leaves the core ('lua_unlock')
265*/
266#if !defined(lua_lock)
267#define lua_lock(L) ((void) 0)
268#define lua_unlock(L) ((void) 0)
269#endif
270
271/*
272** macro executed during Lua functions at points where the
273** function can yield.
274*/
275#if !defined(luai_threadyield)
276#define luai_threadyield(L) {lua_unlock(L); lua_lock(L);}
277#endif
278
279
280/*
281** these macros allow user-specific actions when a thread is
282** created/deleted/resumed/yielded.
283*/
284#if !defined(luai_userstateopen)
285#define luai_userstateopen(L) ((void)L)
286#endif
287
288#if !defined(luai_userstateclose)
289#define luai_userstateclose(L) ((void)L)
290#endif
291
292#if !defined(luai_userstatethread)
293#define luai_userstatethread(L,L1) ((void)L)
294#endif
295
296#if !defined(luai_userstatefree)
297#define luai_userstatefree(L,L1) ((void)L)
298#endif
299
300#if !defined(luai_userstateresume)
301#define luai_userstateresume(L,n) ((void)L)
302#endif
303
304#if !defined(luai_userstateyield)
305#define luai_userstateyield(L,n) ((void)L)
306#endif
307
308
309 194
310/* 195/*
311** The luai_num* macros define the primitive operations over numbers. 196** The luai_num* macros define the primitive operations over numbers.
@@ -359,25 +244,4 @@ typedef l_uint32 Instruction;
359#endif 244#endif
360 245
361 246
362
363
364
365/*
366** macro to control inclusion of some hard tests on stack reallocation
367*/
368#if !defined(HARDSTACKTESTS)
369#define condmovestack(L,pre,pos) ((void)0)
370#else
371/* realloc stack keeping its size */
372#define condmovestack(L,pre,pos) \
373 { int sz_ = stacksize(L); pre; luaD_reallocstack((L), sz_, 0); pos; }
374#endif
375
376#if !defined(HARDMEMTESTS)
377#define condchangemem(L,pre,pos) ((void)0)
378#else
379#define condchangemem(L,pre,pos) \
380 { if (gcrunning(G(L))) { pre; luaC_fullgc(L, 0); pos; } }
381#endif
382
383#endif 247#endif
diff --git a/lobject.h b/lobject.h
index a70731f7..641e782c 100644
--- a/lobject.h
+++ b/lobject.h
@@ -538,6 +538,9 @@ typedef struct Udata0 {
538#define LUA_VPROTO makevariant(LUA_TPROTO, 0) 538#define LUA_VPROTO makevariant(LUA_TPROTO, 0)
539 539
540 540
541typedef l_uint32 Instruction;
542
543
541/* 544/*
542** Description of an upvalue for function prototypes 545** Description of an upvalue for function prototypes
543*/ 546*/
diff --git a/lopcodes.h b/lopcodes.h
index 46911cac..6d888042 100644
--- a/lopcodes.h
+++ b/lopcodes.h
@@ -71,7 +71,7 @@ enum OpMode {iABC, iABx, iAsBx, iAx, isJ}; /* basic instruction formats */
71#if L_INTHASBITS(SIZE_Bx) 71#if L_INTHASBITS(SIZE_Bx)
72#define MAXARG_Bx ((1<<SIZE_Bx)-1) 72#define MAXARG_Bx ((1<<SIZE_Bx)-1)
73#else 73#else
74#define MAXARG_Bx MAX_INT 74#define MAXARG_Bx INT_MAX
75#endif 75#endif
76 76
77#define OFFSET_sBx (MAXARG_Bx>>1) /* 'sBx' is signed */ 77#define OFFSET_sBx (MAXARG_Bx>>1) /* 'sBx' is signed */
@@ -80,13 +80,13 @@ enum OpMode {iABC, iABx, iAsBx, iAx, isJ}; /* basic instruction formats */
80#if L_INTHASBITS(SIZE_Ax) 80#if L_INTHASBITS(SIZE_Ax)
81#define MAXARG_Ax ((1<<SIZE_Ax)-1) 81#define MAXARG_Ax ((1<<SIZE_Ax)-1)
82#else 82#else
83#define MAXARG_Ax MAX_INT 83#define MAXARG_Ax INT_MAX
84#endif 84#endif
85 85
86#if L_INTHASBITS(SIZE_sJ) 86#if L_INTHASBITS(SIZE_sJ)
87#define MAXARG_sJ ((1 << SIZE_sJ) - 1) 87#define MAXARG_sJ ((1 << SIZE_sJ) - 1)
88#else 88#else
89#define MAXARG_sJ MAX_INT 89#define MAXARG_sJ INT_MAX
90#endif 90#endif
91 91
92#define OFFSET_sJ (MAXARG_sJ >> 1) 92#define OFFSET_sJ (MAXARG_sJ >> 1)
diff --git a/lparser.c b/lparser.c
index 2a84637a..cdc8cf42 100644
--- a/lparser.c
+++ b/lparser.c
@@ -859,7 +859,7 @@ static void recfield (LexState *ls, ConsControl *cc) {
859 int reg = ls->fs->freereg; 859 int reg = ls->fs->freereg;
860 expdesc tab, key, val; 860 expdesc tab, key, val;
861 if (ls->t.token == TK_NAME) { 861 if (ls->t.token == TK_NAME) {
862 checklimit(fs, cc->nh, MAX_INT, "items in a constructor"); 862 checklimit(fs, cc->nh, INT_MAX, "items in a constructor");
863 codename(ls, &key); 863 codename(ls, &key);
864 } 864 }
865 else /* ls->t.token == '[' */ 865 else /* ls->t.token == '[' */
diff --git a/lstate.c b/lstate.c
index c3422589..8df86bf5 100644
--- a/lstate.c
+++ b/lstate.c
@@ -52,6 +52,27 @@ typedef struct LG {
52 52
53 53
54/* 54/*
55** these macros allow user-specific actions when a thread is
56** created/deleted
57*/
58#if !defined(luai_userstateopen)
59#define luai_userstateopen(L) ((void)L)
60#endif
61
62#if !defined(luai_userstateclose)
63#define luai_userstateclose(L) ((void)L)
64#endif
65
66#if !defined(luai_userstatethread)
67#define luai_userstatethread(L,L1) ((void)L)
68#endif
69
70#if !defined(luai_userstatefree)
71#define luai_userstatefree(L,L1) ((void)L)
72#endif
73
74
75/*
55** set GCdebt to a new value keeping the real number of allocated 76** set GCdebt to a new value keeping the real number of allocated
56** objects (totalobjs - GCdebt) invariant and avoiding overflows in 77** objects (totalobjs - GCdebt) invariant and avoiding overflows in
57** 'totalobjs'. 78** 'totalobjs'.
diff --git a/lstate.h b/lstate.h
index 2ff0d02b..6094016d 100644
--- a/lstate.h
+++ b/lstate.h
@@ -142,6 +142,17 @@ struct lua_longjmp; /* defined in ldo.c */
142#define EXTRA_STACK 5 142#define EXTRA_STACK 5
143 143
144 144
145/*
146** Size of cache for strings in the API. 'N' is the number of
147** sets (better be a prime) and "M" is the size of each set.
148** (M == 1 makes a direct cache.)
149*/
150#if !defined(STRCACHE_N)
151#define STRCACHE_N 53
152#define STRCACHE_M 2
153#endif
154
155
145#define BASIC_STACK_SIZE (2*LUA_MINSTACK) 156#define BASIC_STACK_SIZE (2*LUA_MINSTACK)
146 157
147#define stacksize(th) cast_int((th)->stack_last.p - (th)->stack.p) 158#define stacksize(th) cast_int((th)->stack_last.p - (th)->stack.p)
diff --git a/lstring.c b/lstring.c
index a374c965..86ee2411 100644
--- a/lstring.c
+++ b/lstring.c
@@ -25,7 +25,17 @@
25/* 25/*
26** Maximum size for string table. 26** Maximum size for string table.
27*/ 27*/
28#define MAXSTRTB cast_int(luaM_limitN(MAX_INT, TString*)) 28#define MAXSTRTB cast_int(luaM_limitN(INT_MAX, TString*))
29
30/*
31** Initial size for the string table (must be power of 2).
32** The Lua core alone registers ~50 strings (reserved words +
33** metaevent keys + a few others). Libraries would typically add
34** a few dozens more.
35*/
36#if !defined(MINSTRTABSIZE)
37#define MINSTRTABSIZE 128
38#endif
29 39
30 40
31/* 41/*
@@ -188,9 +198,9 @@ void luaS_remove (lua_State *L, TString *ts) {
188 198
189 199
190static void growstrtab (lua_State *L, stringtable *tb) { 200static void growstrtab (lua_State *L, stringtable *tb) {
191 if (l_unlikely(tb->nuse == MAX_INT)) { /* too many strings? */ 201 if (l_unlikely(tb->nuse == INT_MAX)) { /* too many strings? */
192 luaC_fullgc(L, 1); /* try to free some... */ 202 luaC_fullgc(L, 1); /* try to free some... */
193 if (tb->nuse == MAX_INT) /* still too many? */ 203 if (tb->nuse == INT_MAX) /* still too many? */
194 luaM_error(L); /* cannot even create a message... */ 204 luaM_error(L); /* cannot even create a message... */
195 } 205 }
196 if (tb->size <= MAXSTRTB / 2) /* can grow string table? */ 206 if (tb->size <= MAXSTRTB / 2) /* can grow string table? */
diff --git a/lstring.h b/lstring.h
index b7226d83..c88357aa 100644
--- a/lstring.h
+++ b/lstring.h
@@ -20,6 +20,17 @@
20 20
21 21
22/* 22/*
23** Maximum length for short strings, that is, strings that are
24** internalized. (Cannot be smaller than reserved words or tags for
25** metamethods, as these strings must be internalized;
26** #("function") = 8, #("__newindex") = 10.)
27*/
28#if !defined(LUAI_MAXSHORTLEN)
29#define LUAI_MAXSHORTLEN 40
30#endif
31
32
33/*
23** Size of a short TString: Size of the header plus space for the string 34** Size of a short TString: Size of the header plus space for the string
24** itself (including final '\0'). 35** itself (including final '\0').
25*/ 36*/
diff --git a/luaconf.h b/luaconf.h
index 33bb580d..fe98d9a9 100644
--- a/luaconf.h
+++ b/luaconf.h
@@ -722,10 +722,7 @@
722@@ LUA_USE_APICHECK turns on several consistency checks on the C API. 722@@ LUA_USE_APICHECK turns on several consistency checks on the C API.
723** Define it as a help when debugging C code. 723** Define it as a help when debugging C code.
724*/ 724*/
725#if defined(LUA_USE_APICHECK) 725/* #define LUA_USE_APICHECK */
726#include <assert.h>
727#define luai_apicheck(l,e) assert(e)
728#endif
729 726
730/* }================================================================== */ 727/* }================================================================== */
731 728
diff --git a/lvm.c b/lvm.c
index 7ee5f6bc..940a15e6 100644
--- a/lvm.c
+++ b/lvm.c
@@ -18,6 +18,7 @@
18 18
19#include "lua.h" 19#include "lua.h"
20 20
21#include "lapi.h"
21#include "ldebug.h" 22#include "ldebug.h"
22#include "ldo.h" 23#include "ldo.h"
23#include "lfunc.h" 24#include "lfunc.h"
@@ -1122,6 +1123,14 @@ void luaV_finishOp (lua_State *L) {
1122*/ 1123*/
1123#define halfProtect(exp) (savestate(L,ci), (exp)) 1124#define halfProtect(exp) (savestate(L,ci), (exp))
1124 1125
1126/*
1127** macro executed during Lua functions at points where the
1128** function can yield.
1129*/
1130#if !defined(luai_threadyield)
1131#define luai_threadyield(L) {lua_unlock(L); lua_lock(L);}
1132#endif
1133
1125/* 'c' is the limit of live values in the stack */ 1134/* 'c' is the limit of live values in the stack */
1126#define checkGC(L,c) \ 1135#define checkGC(L,c) \
1127 { luaC_condGC(L, (savepc(L), L->top.p = (c)), \ 1136 { luaC_condGC(L, (savepc(L), L->top.p = (c)), \
diff --git a/lzio.c b/lzio.c
index 78f7ac83..301df4b9 100644
--- a/lzio.c
+++ b/lzio.c
@@ -14,6 +14,7 @@
14 14
15#include "lua.h" 15#include "lua.h"
16 16
17#include "lapi.h"
17#include "llimits.h" 18#include "llimits.h"
18#include "lmem.h" 19#include "lmem.h"
19#include "lstate.h" 20#include "lstate.h"
diff --git a/makefile b/makefile
index 38e21f1f..a56c9f62 100644
--- a/makefile
+++ b/makefile
@@ -158,12 +158,13 @@ ldebug.o: ldebug.c lprefix.h lua.h luaconf.h lapi.h llimits.h lstate.h \
158ldo.o: ldo.c lprefix.h lua.h luaconf.h lapi.h llimits.h lstate.h \ 158ldo.o: ldo.c lprefix.h lua.h luaconf.h lapi.h llimits.h lstate.h \
159 lobject.h ltm.h lzio.h lmem.h ldebug.h ldo.h lfunc.h lgc.h lopcodes.h \ 159 lobject.h ltm.h lzio.h lmem.h ldebug.h ldo.h lfunc.h lgc.h lopcodes.h \
160 lparser.h lstring.h ltable.h lundump.h lvm.h 160 lparser.h lstring.h ltable.h lundump.h lvm.h
161ldump.o: ldump.c lprefix.h lua.h luaconf.h lobject.h llimits.h lstate.h \ 161ldump.o: ldump.c lprefix.h lua.h luaconf.h lapi.h llimits.h lstate.h \
162 ltm.h lzio.h lmem.h lundump.h 162 lobject.h ltm.h lzio.h lmem.h lgc.h ltable.h lundump.h
163lfunc.o: lfunc.c lprefix.h lua.h luaconf.h ldebug.h lstate.h lobject.h \ 163lfunc.o: lfunc.c lprefix.h lua.h luaconf.h ldebug.h lstate.h lobject.h \
164 llimits.h ltm.h lzio.h lmem.h ldo.h lfunc.h lgc.h 164 llimits.h ltm.h lzio.h lmem.h ldo.h lfunc.h lgc.h
165lgc.o: lgc.c lprefix.h lua.h luaconf.h ldebug.h lstate.h lobject.h \ 165lgc.o: lgc.c lprefix.h lua.h luaconf.h ldebug.h lstate.h lobject.h \
166 llimits.h ltm.h lzio.h lmem.h ldo.h lfunc.h lgc.h lstring.h ltable.h 166 llimits.h ltm.h lzio.h lmem.h ldo.h lfunc.h lgc.h llex.h lstring.h \
167 ltable.h
167linit.o: linit.c lprefix.h lua.h luaconf.h lualib.h lauxlib.h 168linit.o: linit.c lprefix.h lua.h luaconf.h lualib.h lauxlib.h
168liolib.o: liolib.c lprefix.h lua.h luaconf.h lauxlib.h lualib.h 169liolib.o: liolib.c lprefix.h lua.h luaconf.h lauxlib.h lualib.h
169llex.o: llex.c lprefix.h lua.h luaconf.h lctype.h llimits.h ldebug.h \ 170llex.o: llex.c lprefix.h lua.h luaconf.h lctype.h llimits.h ldebug.h \
@@ -199,12 +200,12 @@ ltm.o: ltm.c lprefix.h lua.h luaconf.h ldebug.h lstate.h lobject.h \
199lua.o: lua.c lprefix.h lua.h luaconf.h lauxlib.h lualib.h 200lua.o: lua.c lprefix.h lua.h luaconf.h lauxlib.h lualib.h
200lundump.o: lundump.c lprefix.h lua.h luaconf.h ldebug.h lstate.h \ 201lundump.o: lundump.c lprefix.h lua.h luaconf.h ldebug.h lstate.h \
201 lobject.h llimits.h ltm.h lzio.h lmem.h ldo.h lfunc.h lstring.h lgc.h \ 202 lobject.h llimits.h ltm.h lzio.h lmem.h ldo.h lfunc.h lstring.h lgc.h \
202 lundump.h 203 ltable.h lundump.h
203lutf8lib.o: lutf8lib.c lprefix.h lua.h luaconf.h lauxlib.h lualib.h 204lutf8lib.o: lutf8lib.c lprefix.h lua.h luaconf.h lauxlib.h lualib.h
204lvm.o: lvm.c lprefix.h lua.h luaconf.h ldebug.h lstate.h lobject.h \ 205lvm.o: lvm.c lprefix.h lua.h luaconf.h lapi.h llimits.h lstate.h \
205 llimits.h ltm.h lzio.h lmem.h ldo.h lfunc.h lgc.h lopcodes.h lstring.h \ 206 lobject.h ltm.h lzio.h lmem.h ldebug.h ldo.h lfunc.h lgc.h lopcodes.h \
206 ltable.h lvm.h ljumptab.h 207 lstring.h ltable.h lvm.h ljumptab.h
207lzio.o: lzio.c lprefix.h lua.h luaconf.h llimits.h lmem.h lstate.h \ 208lzio.o: lzio.c lprefix.h lua.h luaconf.h lapi.h llimits.h lstate.h \
208 lobject.h ltm.h lzio.h 209 lobject.h ltm.h lzio.h lmem.h
209 210
210# (end of Makefile) 211# (end of Makefile)