aboutsummaryrefslogtreecommitdiff
path: root/testes/coroutine.lua (unfollow)
Commit message (Collapse)AuthorFilesLines
2021-09-15Using 'inline' in some functionsRoberto Ierusalimschy5-15/+32
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.)
2021-09-03Revamp of format validation in 'string.format'Roberto Ierusalimschy3-36/+118
When calling 'sprintf', not all conversion specifiers accept all flags; some combinations are undefined behavior.
2021-08-18'luaD_tryfuncTM' checks stack space by itselfRoberto Ierusalimschy3-9/+11
2021-08-18Undo simplification of tail calls (commit 901d760)Roberto Ierusalimschy3-51/+51
Not that simpler and slower.
2021-08-18Detail in 'testes/math.lua'Roberto Ierusalimschy1-0/+1
Added a print with the random seeds used in the tests of 'random'.
2021-08-16Option '-l' can give a name for the global variable.Roberto Ierusalimschy2-15/+27
Sintax for this option now is '-l [globname=]modname'.
2021-08-11Added tests for string reuse by the scannerRoberto Ierusalimschy2-1/+25
2021-08-11Improved documentation for 'lua_getinfo'Roberto Ierusalimschy1-18/+24
2021-07-22Bug: luaL_tolstring may get confused with negative indexRoberto Ierusalimschy3-0/+20
When object has a '__name' metafield, 'luaL_tolstring' used the received index after pushing a string on the stack.
2021-07-22Bug: Negation in 'luaV_shiftr' may overflowRoberto Ierusalimschy2-1/+6
Negation of an unchecked lua_Integer overflows with mininteger.
2021-07-21Correction on documentation of string-buffer operationsRoberto Ierusalimschy1-4/+4
All string-buffer operations can potentially change the stack in unspecified ways; the push/pop documentation in the manual should reflect that.
2021-06-30Simplification in the parameters of 'luaD_precall'Roberto Ierusalimschy3-14/+24
The parameters 'nresults' and 'delta1', in 'luaD_precall', were never meaningful simultaneously. So, they were combined in a single parameter 'retdel'.
2021-06-20Bug: 'local function' can assign to '<const>' variablesRoberto Ierusalimschy2-0/+3
2021-06-14C functions can be tail called, tooRoberto Ierusalimschy4-29/+29
A tail call to a C function can have the behavior of a "real" tail call, reusing the stack frame of the caller.
2021-06-11Simpler implementation for tail callsRoberto Ierusalimschy3-39/+33
Tail calls handled by 'luaD_precall', like regular calls, to avoid code duplication.
2021-06-09Avoid the term "undefined behavior" in the manualRoberto Ierusalimschy1-3/+2
2021-05-24'index2value' more robustRoberto Ierusalimschy1-5/+13
'index2value' accepts pseudo-indices also when called from a Lua function, through a hook.
2021-05-24DetailsRoberto Ierusalimschy2-14/+7
- Removed unused (and trivial) definition LUA_UNSIGNEDBITS - Alignment structure in pack/unpack moved to a narrower scope
2021-04-16Bug: yielding in '__close' mess up number of returnsRoberto Ierusalimschy3-2/+71
Yielding in a __close metamethod called when returning vararg results changes the top and so messes up the number of returned values.
2021-04-12Align error messages for calling non-callable valuesRoberto Ierusalimschy1-11/+37
'pcall(foo)' message was "attempt to call a table value", while 'pcall(function () foo() end) message was "global 'foo' is not callable".
2021-04-10Bug: Lua source should not use C99 comments ("//")Roberto Ierusalimschy1-2/+4
2021-04-07Bug: tbc variables in "for" loops don't avoid tail callsRoberto Ierusalimschy2-6/+38
2021-03-30Changes in cache for function constantsRoberto Ierusalimschy2-8/+40
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.)
2021-03-29New hash function for integer keysRoberto Ierusalimschy1-2/+14
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.)
2021-03-29Allow yields inside '__pairs'Roberto Ierusalimschy2-1/+27
2021-03-29DetailsRoberto Ierusalimschy5-16/+32
Comments and small improvements in the manual.
2021-03-29Next release number (5.4.4)Roberto Ierusalimschy1-2/+2
2021-03-12Added option LUA_NOBUILTINv5.4.3Roberto Ierusalimschy1-2/+4
This option allows external code to avoid the use of gcc builtin macro '__builtin_expect' in the Lua API.
2021-03-12DetailsRoberto Ierusalimschy1-21/+40
Comments and order of hashing macros in 'ltable.c'.
2021-03-10File 'tracegc.lua' added to 'packtests'Roberto Ierusalimschy1-0/+1
2021-03-10New implementation for 'tbclist'Roberto Ierusalimschy2-13/+32
- Fixes a bug, by removing dummy nodes together with the node itself. (The previous implementation could leave dummy nodes in frames which otherwise had no tbc variables, and therefore would not close variables; that could leave 'tbclist' pointing higher than 'top', which could dangle if the stack shrank.) - Computes MAXDELTA based on the type of delta, to ease changing its type if needed. - Instead of 'isdummy', uses 'delta==0' to signal dummy nodes. (Dummy nodes always have MAXDELTA for their real delta.)
2021-03-09Uses of "likely" in macros active to all usersRoberto Ierusalimschy2-12/+15
The use of 'l_likely' in auxlib macros 'luaL_argcheck' and 'luaL_argexpected' should not be restricted to Lua's own code. For that, 'l_likely' was renamed to 'luai_likely' to be exported to external code.
2021-03-09lua_settop/lua_pop closes to-be-closed variablesRoberto Ierusalimschy3-20/+44
The existence of 'lua_closeslot' is no reason for lua_pop not to close to-be-closed variables too. It is too error-prone for lua_pop not to close tbc variables being popped from the stack.
2021-03-05Wrong assertion in 'getbaseline'Roberto Ierusalimschy2-1/+12
The assertion cannot compute 'f->abslineinfo[i]' when the initial estimate 'i' is -1.
2021-03-03New release number (5.4.3)Roberto Ierusalimschy2-4/+4
2021-03-02Normalization of metamethod typography in the manualRoberto Ierusalimschy1-10/+10
2021-03-02Added assertions for proper use of string buffersRoberto Ierusalimschy1-5/+17
2021-03-02Stack check in warning function for testsRoberto Ierusalimschy1-0/+2
The warning function using for tests need to check the stack before pushing anything. (Warning functions are not expected to access a Lua state, therefore they have no preallocated stack space.)
2021-03-01New test module 'tracegc'Roberto Ierusalimschy4-18/+54
New module easies the inclusion of GC tracing in individual test files.
2021-02-27Stack reallocation done in two phasesRoberto Ierusalimschy1-7/+21
$he stack reallocation is done in two steps (allocation + free) because the correction of the pointers pointing into the stack must be done while both addresses (the old stack and the new one) are valid. In ISO C, any pointer use after the pointer has been deallocated is undefined behavior. The compiler option '-fsanitize=pointer-subtract' (plus what it needs to work) complained about the old implementation.
2021-02-26New control for reentrancy of emergency collectionsRoberto Ierusalimschy5-25/+46
Instead of assuming that shrinking a block may be an emergency collection, use an explicit field ('gcstopem') to stop emergency collections while GC is working.
2021-02-25Bug (kind of) in 'isinstack'Roberto Ierusalimschy2-6/+17
The function 'isinstack' tried to work around the undefined behavior of subtracting two pointers that do not point to the same object, but the compiler killed to trick. (It optimizes out the safety check, because in a correct execution it will be always true.)
2021-02-24Don't use tointegerns when luaV_tointegerns will doRoberto Ierusalimschy3-4/+10
Some places don't need the "fast path" macro tointegerns, either because speed is not essential (lcode.c) or because the value is not supposed to be an integer already (luaV_equalobj and luaG_tointerror). Moreover, luaV_equalobj should always use F2Ieq, even if Lua is compiled to "round to floor".
2021-02-24DetailsRoberto Ierusalimschy2-9/+9
Added documentation and asserts that constants for arithmetic opcodes must be numbers.
2021-02-24Broadening the use of branch hintsRoberto Ierusalimschy24-141/+162
More uses of macros 'likely'/'unlikely' (renamed to 'l_likely'/'l_unlikely'), both in range (extended to the libraries) and in scope (extended to hooks, stack growth).
2021-02-15Bug: 'string.concat' error message uses wrong formatRoberto Ierusalimschy2-1/+4
2021-02-15Bug: cannot allow the call 'debug.getinfo(0, ">")'Roberto Ierusalimschy2-0/+2
A 'what' argument starting with '>' indicates that there is a function in the C stack, which won't be there if the first argument is not a function.
2021-02-12'__close' methods can yield in the return of a C functionRoberto Ierusalimschy5-34/+131
When, inside a coroutine, a C function with to-be-closed slots return, the corresponding metamethods can yield. ('__close' metamethods called through 'lua_closeslot' still cannot yield, as there is no continuation to go when resuming.)
2021-02-10Eases the use of clang in the makefileRoberto Ierusalimschy1-4/+9
New definition in the makefile for warnings that are valid for gcc but not for clang (CWARNGCC).
2021-02-09New implementation for to-be-closed variablesRoberto Ierusalimschy10-66/+103
To-be-closed variables are linked in their own list, embedded into the stack elements. (Due to alignment, this information does not change the size of the stack elements in most architectures.) This new list does not produce garbage and avoids memory errors when creating tbc variables.