Commit Graph

5649 Commits

Author SHA1 Message Date
Roberto Ierusalimschy
e3ce88c9e8 New function 'lua_numbertostrbuff'
It converts a Lua number to a string in a buffer, without creating
a new Lua string.
2024-10-23 17:16:17 -03:00
Roberto Ierusalimschy
5ffcd458f0 Some changes in default GC parameters 2024-10-23 17:15:06 -03:00
Roberto Ierusalimschy
9b01da97e3 Small bug in 'luaE_luaE_statesize'
Plus, function was renamed to 'luaE_threadsize'.
2024-10-21 15:30:35 -03:00
Roberto Ierusalimschy
258355734d Better support in 'ltests' for tracing the GC 2024-10-21 15:18:20 -03:00
Roberto Ierusalimschy
d0815046d0 Some adjustments in transition minor->major
Plus extra comments and other details.
2024-10-18 17:10:20 -03:00
Roberto Ierusalimschy
3d54b42d59 'objsize' broke in smaller pieces 2024-09-30 14:01:42 -03:00
Roberto Ierusalimschy
e4f418f07c Local declaration in the REPL generates a warning 2024-09-27 10:00:35 -03:00
Roberto Ierusalimschy
20d42ccaae No errors in 'luaO_pushvfstring'
Any call to 'va_start' must have a corresponding call to 'va_end';
so, functions called between them (luaO_pushvfstring in particular)
cannot raise errors.
2024-09-20 15:56:39 -03:00
Roberto Ierusalimschy
70d6975018 Towards no errors in 'luaO_pushvfstring'
Any call to 'va_start' must have a corresponding call to 'va_end';
so, functions called between them (luaO_pushvfstring in particular)
cannot raise errors.
2024-09-20 12:21:11 -03:00
Roberto Ierusalimschy
00e34375ec In 'luaO_pushvfstring', all options use 'addstr2buff' 2024-09-20 10:06:06 -03:00
Roberto Ierusalimschy
45a8f1b593 Removed 'if' left from commit ddfa1fbccf 2024-09-20 09:43:46 -03:00
Roberto Ierusalimschy
8fac494509 Avoid Microsoft warning
> warning C4334: '<<': result of 32-bit shift implicitly converted to
> 64 bits (was 64-bit shift intended?)
2024-09-19 19:09:35 -03:00
Roberto Ierusalimschy
9b72355f99 USHRT_MAX changed to SHRT_MAX
USHRT_MAX does not fit in an 'int' in 16-bit systems.
2024-09-19 19:06:16 -03:00
Roberto Ierusalimschy
ddfa1fbccf GC back to controling pace counting bytes
Memory is the resource we want to save. Still to be reviewed again.
2024-09-19 19:02:14 -03:00
Roberto Ierusalimschy
b443145ff3 Details
Fixed comments in sort partition.
2024-09-12 11:08:11 -03:00
Roberto Ierusalimschy
4901853c11 Parameter for lua_gc/LUA_GCSTEP changed to 'size_t'
'size_t' is the common type for measuring memory. 'int' can be too
small for steps.
2024-09-10 17:05:39 -03:00
Roberto Ierusalimschy
a04e0ffdb9 Rename of fields in global state that control GC
All fields in the global state that control the pace of the garbage
collector prefixed with 'GC'.
2024-09-06 14:38:39 -03:00
Roberto Ierusalimschy
007b8c7a01 Details
Identation + comments
2024-09-06 14:35:04 -03:00
Roberto Ierusalimschy
fd0e1f530d Added option for direct correction of stack pointers
The use of a pointer (not access, only for computations) after its
deallocation is forbiden in ISO C, but seems to work fine in all
platforms we are aware of. So, using that to correct stack pointers
after a stack reallocation seems safe and is much simpler than the
current implementation (first change all pointers to offsets and
then changing the offsets back to pointers). Anyway, for now that
option is disabled.
2024-08-22 11:11:00 -03:00
Roberto Ierusalimschy
75620b45ae 'lcode.c' can use 'checklimit', too 2024-08-20 15:15:23 -03:00
Roberto Ierusalimschy
3e88b72b8e A return can have at most 254 values 2024-08-19 18:39:25 -03:00
Roberto Ierusalimschy
8b752ddf14 Bug: wrong code gen. for indices with comparisons
In function 'luaK_exp2val', used to generate code for indices: Macro
'hasjumps' does not consider the case when the whole expression is a
"jump" (a test). In all other of its uses, the surrounding code ensures
that the expression cannot be VJMP.
2024-08-17 12:47:28 -03:00
Roberto Ierusalimschy
1bf4b80f1a Floats formatted with "correct" precision
Conversion float->string ensures that, for any float f,
tonumber(tostring(f)) == f, but still avoiding noise like 1.1
converting to "1.1000000000000001".
2024-08-02 15:09:30 -03:00
Roberto Ierusalimschy
4c6afbcb01 Struct 'transferinfo' moved to "lua_State"
That reduces the size of "CallInfo". Moreover, bit CIST_HOOKED from
call status is not needed. When in a hook, 'transferinfo' is always
valid, being zero when the hook is not call/return.
2024-07-30 10:16:19 -03:00
Roberto Ierusalimschy
f2206b2abe '-Wconversion' extended to all options of Lua numbers 2024-07-27 15:13:21 -03:00
Roberto Ierusalimschy
0acd55898d Added gcc option '-Wconversion'
No warnings for standard numerical types. Still pending alternative
numerical types.
2024-07-27 13:32:59 -03:00
Roberto Ierusalimschy
15231d4fb2 'nresults' moved into 'callstatus'
That gives us more free bits in 'callstatus', for future use.
2024-07-21 14:56:59 -03:00
Roberto Ierusalimschy
f407b3c4a1 Using CIST_CLSRET instead of trick with 'nresults'
The callstatus flag CIST_CLSRET is used in all tests for the
presence of variables to be closed in C functions.
2024-07-19 17:34:22 -03:00
Roberto Ierusalimschy
a546138d15 Explicit limit for number of results in a call
The parameter 'nresults' in 'lua_call' and similar functions has a
limit of 250. It already had an undocumented (and unchecked) limit of
SHRT_MAX, but it is seldom larger than 2.
2024-07-18 14:44:40 -03:00
Roberto Ierusalimschy
cd4de92762 Maximum stack size may not fit in unsigned short
Therefore, fields ftransfer/ntransfer in lua_Debug must have type
'int'. (Maximum stack size must fit in an 'int'.) Also, this commit
adds check that maximum stack size respects size_t for size in bytes.
2024-07-16 11:33:30 -03:00
Roberto Ierusalimschy
6b45ccf4ed Removed compatibility with "= exp" in the REPL 2024-07-05 15:19:11 -03:00
Roberto Ierusalimschy
93fd6892f8 Fixed bug in 'multiline'
'incomplete' was popping error message that should be used in case
there is no more lines to complete the input, that is, 'pushline'
returns NULL, due to end of file.
2024-07-05 15:13:46 -03:00
Roberto Ierusalimschy
193bf7919e 'printstack' (from ltests.c) made public
That function is useful for debugging the API.
2024-07-05 14:57:11 -03:00
Roberto Ierusalimschy
366c855648 lua.c loads 'readline' dynamically
(See comments in luaconf.h.) This change allows easier compilation,
as Lua compiles and works even if the package 'readline' is absent
from the system. Moreover, non-interactive uses don't load the library,
making the stand-alone slightly faster for small loads.
2024-07-04 17:11:58 -03:00
Roberto Ierusalimschy
781219dbe1 Small changes in casts from void* to functions
Macro moved to llimits.h, and casts from void* to lua_CFunction first
go through 'voidf' (a pointer to a function from void to void), a kind
of void* for functions.
2024-07-02 11:09:46 -03:00
Roberto Ierusalimschy
d71fbc3175 Updated dependencies in the make file
Mainly to include 'llimits.h' in the non-kernel files
2024-07-01 15:58:07 -03:00
Roberto Ierusalimschy
c403e456b6 New instruction format for SETLIST/NEWTABLE
New instruction format 'ivABC' (a variant of iABC where parameter vC has
10 bits) allows constructors of up to 1024 elements to be coded without
EXTRAARG.
2024-06-28 11:18:14 -03:00
Roberto Ierusalimschy
6ac7219da3 'isIT'/'isOT' turned from macros to functions 2024-06-27 15:01:57 -03:00
Roberto Ierusalimschy
9904c253da Flexible limit for use of registers by constructors
Instead of a fixed limit of 50 registers (which, in a bad worst case,
can limit the nesting of constructors to 5 levels), the compiler
computes an individual limit for each constructor based on how many
registers are available when it runs. This limit then controls the
frequency of SETLIST instructions.
2024-06-27 11:24:27 -03:00
Roberto Ierusalimschy
fb7e5b76c9 Clearer code for controlling maximum registers
Plus, added a test to check that limit.
2024-06-26 14:46:44 -03:00
Roberto Ierusalimschy
c1dc08e8e8 Length of external strings must fit in Lua integer
(As the length of any string in Lua.)
2024-06-24 12:03:59 -03:00
Roberto Ierusalimschy
0f7025dcae Details in the manual 2024-06-21 16:36:24 -03:00
Roberto Ierusalimschy
ef28e5f789 Removed 'int' size limit for string.rep 2024-06-21 16:26:49 -03:00
Roberto Ierusalimschy
ec65ab878e Removed 'int' size limit for pack/unpack 2024-06-21 14:55:12 -03:00
Roberto Ierusalimschy
e24ce8c2b3 lua_writestring & co. moved to llimits.h
They don't need to be visible by clients of Lua.
2024-06-21 12:29:08 -03:00
Roberto Ierusalimschy
a08d82eb13 llimits.h being used by all Lua code
The definitions in llimits.h are useful not only for the core. That
header only defines types and '#define's, so libs and core still do
not share any real code/data.
2024-06-20 14:46:06 -03:00
Roberto Ierusalimschy
55ac40f859 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.
2024-06-20 13:43:33 -03:00
Roberto Ierusalimschy
97ef8e7bd4 GC test was not restarting collector after pause 2024-06-18 17:14:23 -03:00
Roberto Ierusalimschy
aaf3533653 Tricky _PROMPT may trigger undefined behavior in lua.c 2024-06-12 16:04:25 -03:00
Roberto Ierusalimschy
b529aefc53 Bug: luaL_traceback may need more than 5 stack slots 2024-06-12 16:02:01 -03:00