aboutsummaryrefslogtreecommitdiff
path: root/ldo.h (unfollow)
Commit message (Collapse)AuthorFilesLines
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.
2021-02-05New macro 'completestate'Roberto Ierusalimschy4-7/+11
2021-02-05Forbid changing numerical types through compiler optionsRoberto Ierusalimschy1-41/+42
'luaconf.h' always defines options LUA_32BITS, LUA_C89_NUMBERS, LUA_INT_TYPE, and LUA_FLOAT_TYPE (using 0/1 for the first two), to avoid they being set through compiler options. (It is too easy to forget these options when compiling other software that interoperates with Lua.)
2021-02-05Fixed some bugs around stack reallocationRoberto Ierusalimschy4-1/+6
Long time without using HARDSTACKTESTS...
2021-02-02Optimization/simplification of 'getbaseline'Roberto Ierusalimschy3-24/+19
By producing absolute line information at regular intervals, a simple division can compute the correct entry for a given instruction.
2021-01-28Optimizations for line hookRoberto Ierusalimschy4-33/+47
The function 'changedline' tries harder to avoid calling 'luaG_getfuncline' plus small changes in the use of 'L->oldpc'.
2021-01-26Small improvements in hooksRoberto Ierusalimschy2-9/+30
- 'L->top' is set once in 'luaD_hook', instead of being set in 'luaD_hookcall' and 'rethook'; - resume discard arguments when returning after an yield inside a hook (arguments may interfere with the coroutine stack); - yield inside a hook asserts it has no arguments.
2021-01-25Janitorial workRoberto Ierusalimschy4-26/+45
Comments, code details, identation.
2021-01-21Correct order of return hooks vs. close metamethodsRoberto Ierusalimschy2-16/+85
The return hook should be called only after closing variables (which are still part of the function). C functions were calling the hook before the metamethods.
2021-01-19Simpler handling of errors when creating tbc variablesRoberto Ierusalimschy6-35/+25
New field 'lua_State.ptbc' keeps to-be-closed variable until its upvalue is created, so that it can be closed in case of a memory-allocation error.
2021-01-18Allow yields in '__close' metamethods ater errorsRoberto Ierusalimschy3-71/+126
Completes commit b07fc10e91a. '__close' metamethods can yield even when they are being called due to an error. '__close' metamethods from C functions are still not allowed to yield.
2021-01-14Corrected documentation for 'table.sort'Roberto Ierusalimschy1-8/+8
The sort function must define a (strict) weak order for a correct sorting. A partial order is not enough.
2021-01-13Allow yields inside '__close' metamethodsRoberto Ierusalimschy7-18/+114
Initial implementation to allow yields inside '__close' metamethods. This current version still does not allow a '__close' metamethod to yield when called due to an error. '__close' metamethods from C functions also are not allowed to yield.
2021-01-11New API function 'lua_closeslot'Roberto Ierusalimschy6-29/+66
Closing a to-be-closed variable with 'lua_settop' is too restrictive, as it erases all slots above the variable. Moreover, it adds side effects to 'lua_settop', which should be a fairly basic function.
2020-12-30Handles '__close' errors in coroutines in "coroutine style"Roberto Ierusalimschy2-22/+85
Errors in '__close' metamethods in coroutines are handled by the same logic that handles other errors, through 'recover'.
2020-12-29Do not insert nil values into tablesRoberto Ierusalimschy1-0/+2
2020-12-29Better error messages for calling non-callable objectsRoberto Ierusalimschy6-11/+52
When available, use the calling code to find a suitable name for what was being called; this is particularly useful for errors of non-callable metamethods. This commit also improved the debug information for order metamethods.
2020-12-29No need to recheck close method before calling itRoberto Ierusalimschy2-27/+63
A to-be-closed variable is constant and it must have a close metamethod when it is created. A program has to go out of its way (e.g., by changing the variable's metamethod) to invalidate that check. So, it is not worth to test that again. If the program tampers with the metamethod, Lua will raise a regular error when attempting to call it.
2020-12-28Reset thread before panickingRoberto Ierusalimschy3-14/+15
Before panicking, it is simpler to reset the thread instead of closing its variables and adjust the top manually.
2020-12-28Cleaner handling of errors in '__close' metamethodsRoberto Ierusalimschy7-75/+80
Instead of protecting each individual metamethod call, protect the entire call to 'luaF_close'.
2020-12-22Report last error in closing methodsRoberto Ierusalimschy5-101/+35
When there are multiple errors around closing methods, report the last error instead of the original.
2020-12-21Upvalues removed from 'openupval' before being closedRoberto Ierusalimschy3-26/+31
Undo commit c220b0a5d0: '__close' is not called again in case of errors. (Upvalue is removed from the list before the call.) The common error that justified that change was C stack overflows, which are much rarer with the stackless implementation.
2020-12-18'coroutine.close'/'lua_resetthread' report original errorsRoberto Ierusalimschy5-15/+40
Besides errors in closing methods, 'coroutine.close' and 'lua_resetthread' also consider the original error that stopped the thread, if any.
2020-12-16Cleaner handling of floats in pack/unpackRoberto Ierusalimschy1-29/+41
2020-12-16Cleaner definition for macro 'ttisclosure'Roberto Ierusalimschy1-1/+2
2020-12-08Review of asserts in 'ltests.c'Roberto Ierusalimschy1-56/+70
The module 'ltests.c' must work correctly with asserts off, too.
2020-12-07Details (do not affect regular code)Roberto Ierusalimschy4-3/+31
* Avoids multiple definitions of 'lua_assert' in test file. * Smaller C-stack limit in test mode. * Note in the manual about the use of false * Extra test for constant reuse.
2020-12-04Changes in the API of 'luaH_set' and related functionsRoberto Ierusalimschy6-40/+58
Functions to set values in a table (luaH_set, luaH_newkey, etc.) receive the new value, instead of returning a slot where to put the value.
2020-12-03Added test cases for error messages about goto/labelRoberto Ierusalimschy1-0/+21