| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
| |
The explanation includes the limit case of maxinteger being a border.
It also avoids the term "natural", which might include large floats
with natural values.
|
|
|
|
| |
Warnings with clang when using long double for Lua floats.
|
| |
|
|
|
|
|
| |
'os.exit' can call lua_close again, separating new finalizers
created after all previous finalizers were already separated.
|
|
|
|
| |
correction in macro for hard tests + type in comment
|
|
|
|
|
| |
The call to 'checkstackGC' can run finalizers, which will find an
inconsistent CallInfo, as 'ci' is half updated at the point of call.
|
|
|
|
|
|
| |
The flag CIST_FIN does not mark a finalizer, but the function that was
running when the finalizer was called. (So, the function did not call
the finalizer, but it looks that way in the stack.)
|
|
|
|
| |
As the GC is not reentrant, finalizers should not be able to invoke it.
|
| |
|
|
|
|
|
| |
Handle values in table keys as the special cases they are, and not
the other way around.
|
| |
|
|
|
|
|
|
| |
The pointer to the metamethod can be invalidated by a finalizer that
can run during a GC in 'checkstackGCp'. (This commit also fixes a
detail in the manual.) Bug introduced in commit 91673a8ec.
|
|
|
|
|
| |
when building the table 'activelines' for a vararg function, this
first instruction does not make the first line active.
|
|
|
|
|
|
|
|
|
| |
When closing variables during 'coroutine.close' or 'lua_resetthread',
the status of a coroutine must be set to LUA_OK; a coroutine should
not run with any other status. (See assertion in 'lua_callk'.)
After the reset, the status should be kept as normal, as any error
was already reported.
|
|
|
|
|
|
| |
'coroutine.resume' did not increment counter of C calls when
continuing execution after a protected error (that is,
while running 'precover').
|
|
|
|
|
|
|
|
|
|
|
| |
'luaD_pretailcall' mimics 'luaD_precall', handling call metamethods
and calling C functions directly. That makes the code in the
interpreter loop simpler.
This commit also goes back to emulating the tail call in 'luaD_precall'
with a goto, as C compilers may not do proper tail calls and the C
stack can overflow much sooner than the Lua stack (which grows as the
metamethod is added to it).
|
|
|
|
| |
(plus a detail in lauxlib.h.)
|
|
|
|
| |
That structure can be packed in the future.
|
|
|
|
|
| |
Better explanation about the guaranties of multiple assignment in
the manual.
|
|
|
|
|
|
| |
Any C function can receive maxinteger as an integer argument, and
therefore cannot increment it without some care (e.g., doing unsigned
arithmetic as the core does).
|
|
|
|
|
| |
According to ISO C, "making a function an inline function suggests that
calls to the function be as fast as possible." (Not available in C89.)
|
|
|
|
|
| |
When calling 'sprintf', not all conversion specifiers accept all
flags; some combinations are undefined behavior.
|
| |
|
|
|
|
| |
Not that simpler and slower.
|
|
|
|
| |
Added a print with the random seeds used in the tests of 'random'.
|
|
|
|
| |
Sintax for this option now is '-l [globname=]modname'.
|
| |
|
| |
|
|
|
|
|
| |
When object has a '__name' metafield, 'luaL_tolstring' used the
received index after pushing a string on the stack.
|
|
|
|
| |
Negation of an unchecked lua_Integer overflows with mininteger.
|
|
|
|
|
|
| |
All string-buffer operations can potentially change the stack in
unspecified ways; the push/pop documentation in the manual should
reflect that.
|
|
|
|
|
|
| |
The parameters 'nresults' and 'delta1', in 'luaD_precall', were never
meaningful simultaneously. So, they were combined in a single parameter
'retdel'.
|
| |
|
|
|
|
|
| |
A tail call to a C function can have the behavior of a "real" tail
call, reusing the stack frame of the caller.
|
|
|
|
|
| |
Tail calls handled by 'luaD_precall', like regular calls, to avoid
code duplication.
|
| |
|
|
|
|
|
| |
'index2value' accepts pseudo-indices also when called from a Lua
function, through a hook.
|
|
|
|
|
| |
- Removed unused (and trivial) definition LUA_UNSIGNEDBITS
- Alignment structure in pack/unpack moved to a narrower scope
|
|
|
|
|
| |
Yielding in a __close metamethod called when returning vararg results
changes the top and so messes up the number of returned values.
|
|
|
|
|
| |
'pcall(foo)' message was "attempt to call a table value", while
'pcall(function () foo() end) message was "global 'foo' is not callable".
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
In 'lcode.c', when adding constants to the list of constants of a
function, integers represent themselves in the cache and floats
with integral values get a small delta to avoid collision with
integers. (This change avoids creating artificial addresses; the old
implementation converted integers to pointers to index the cache.)
|
|
|
|
|
|
|
| |
When integer keys do not form a sequence, it is better to use all their
bits to compute their hashes. (The previous implementation was quite bad
for integer keys with common lower bits, and disastrous for integer keys
changing only in their upper 32 bits.)
|
| |
|
|
|
|
| |
Comments and small improvements in the manual.
|
| |
|
|
|
|
|
| |
This option allows external code to avoid the use of gcc builtin macro
'__builtin_expect' in the Lua API.
|
|
|
|
| |
Comments and order of hashing macros in 'ltable.c'.
|
| |
|