Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | Details | Roberto Ierusalimschy | 2019-06-03 | 1 | -2/+2 |
| | | | | | Several small changes from feedback on 5.4 alhpa rc1 (warnings, typos in the manual, and the like) | ||||
* | Avoid moving the collector while in 'GCSenteratomic' state | Roberto Ierusalimschy | 2019-04-01 | 1 | -2/+2 |
| | | | | | | The 'GCSenteratomic' is just an auxiliary state for transitioning to 'GCSatomic'. All GC traversals should be done either on the 'GCSpropagate' state or the 'GCSatomic' state. | ||||
* | Finalizers must be callable | Roberto Ierusalimschy | 2019-03-14 | 1 | -1/+1 |
| | | | | | Non-function __gc metamethods are not ignored; if present, the metamethod will be called even if it is not a function. | ||||
* | Changes in the warning system | Roberto Ierusalimschy | 2019-03-14 | 1 | -4/+4 |
| | | | | | | | | - The warning functions get an extra parameter that tells whether message is to be continued (instead of using end-of-lines as a signal). - The user data for the warning function is a regular value, instead of a writable slot inside the Lua state. | ||||
* | After a "bad collections", avoid switching back back to generational | Roberto Ierusalimschy | 2019-01-30 | 1 | -44/+114 |
| | | | | | | | After a major bad collection (one that collects too few objects), next collection will be major again. In that case, avoid switching back to generational mode (as it will have to switch again to incremental to do next major collection). | ||||
* | No more LUA_ERRGCMM errors | Roberto Ierusalimschy | 2019-01-01 | 1 | -15/+13 |
| | | | | | Errors in finalizers (__gc metamethods) are never propagated. Instead, they generate a warning. | ||||
* | Removed internal cache for closures | Roberto Ierusalimschy | 2018-11-01 | 1 | -63/+1 |
| | | | | | | | | | | | | | | | | | | | The mechanism of "caching the last closure created for a prototype to try to reuse it the next time a closure for that prototype is created" was removed. There are several reasons: - It is hard to find a natural example where this cache has a measurable impact on performance. - Programmers already perceive closure creation as something slow, so they tend to avoid it inside hot paths. (Any case where the cache could reuse a closure can be rewritten predefining the closure in some variable and using that variable.) - The implementation was somewhat complex, due to a bad interaction with the generational collector. (Typically, new closures are new, while prototypes are old. So, the cache breaks the invariant that old objects should not point to new ones.) | ||||
* | First "complete" implementation of to-be-closed variables | Roberto Ierusalimschy | 2018-10-17 | 1 | -0/+5 |
| | | | | | | | Still missing: - handling of memory errors when creating upvalue (must run closing method all the same) - interaction with coroutines | ||||
* | Towards "to closed" local variables | Roberto Ierusalimschy | 2018-10-08 | 1 | -1/+3 |
| | | | | | | | | | | | | Start of the implementation of "scoped variables" or "to be closed" variables, local variables whose '__close' (or themselves) are called when they go out of scope. This commit implements the syntax, the opcode, and the creation of the corresponding upvalue, but it still does not call the finalizations when the variable goes out of scope (the most important part). Currently, the syntax is 'local scoped name = exp', but that will probably change. | ||||
* | Comments about OLD0/OLD1 ages | Roberto Ierusalimschy | 2018-07-18 | 1 | -24/+30 |
| | | | | | Improved the comments in file 'lgc.c' explaining the roles of "ages" OLD0 and OLD1 in the generacional collector. | ||||
* | Fixed bug in generational collection of userdata | Roberto Ierusalimschy | 2018-07-13 | 1 | -11/+15 |
| | | | | | | | | | During generational collection, a userdatum must become gray and go to a gray list after being traversed (like tables), so that 'correctgraylist' can handle it to its next stage. This commit also added minimum tests for the generational collector, including one that would detect this bug. | ||||
* | Generational mode may wait longer after a major collection | Roberto Ierusalimschy | 2018-07-09 | 1 | -8/+25 |
| | | | | | | | | When Lua is building large long-duration structures, frequent small minor collections just waste time. Trying to avoid this, the collector will do a larger pause after a major collection when it does not collect enough garbage (which is a hint that memory is being used for long-lasting objects). | ||||
* | field 'sizearray' in struct 'Table' changed to 'alimit', which can | Roberto Ierusalimschy | 2018-06-15 | 1 | -6/+9 |
| | | | | be used as a hint for '#t' | ||||
* | FALLTHROUGH comment must be last "statement" | Roberto Ierusalimschy | 2018-03-16 | 1 | -3/+3 |
| | | | | (so it does not work when inside a block) | ||||
* | special compact representation for userdata with no user values | Roberto Ierusalimschy | 2018-02-26 | 1 | -3/+16 |
| | | | | (a common case) | ||||
* | in 'clearbykeys', clear keys of just-removed entries too | Roberto Ierusalimschy | 2018-02-23 | 1 | -3/+3 |
| | |||||
* | first version of empty entries in tables | Roberto Ierusalimschy | 2018-02-23 | 1 | -28/+30 |
| | | | | (so that, in the future, tables can contain regular nil entries) | ||||
* | some reorganization in 'lobject.h' | Roberto Ierusalimschy | 2018-02-22 | 1 | -1/+6 |
| | | | | (just moving stuff around) | ||||
* | userdata can have multiple user values | Roberto Ierusalimschy | 2018-02-20 | 1 | -16/+17 |
| | |||||
* | more generic way to handle 'gclist' | Roberto Ierusalimschy | 2018-02-19 | 1 | -62/+50 |
| | |||||
* | small corrections in generational mode | Roberto Ierusalimschy | 2018-02-05 | 1 | -7/+9 |
| | | | | | (cannot call finalizers in emergency collections + should set everything before calling finalizers) | ||||
* | janitor work on casts | Roberto Ierusalimschy | 2018-01-28 | 1 | -2/+2 |
| | |||||
* | keep control of stack top in Lua functions concentrated in 'luaV_execute' | Roberto Ierusalimschy | 2017-12-28 | 1 | -8/+3 |
| | |||||
* | when running Lua code, there is no need to keep 'L->top' "correct"; | Roberto Ierusalimschy | 2017-12-20 | 1 | -2/+12 |
| | | | | set it only when needed. | ||||
* | more freedom in handling memory-allocation errors (not all allocations | Roberto Ierusalimschy | 2017-12-08 | 1 | -8/+3 |
| | | | | | automatically raise an error), which allows fixing a bug when resizing a table. | ||||
* | 'luaS_resize' can raise memory errors | Roberto Ierusalimschy | 2017-12-01 | 1 | -4/+9 |
| | |||||
* | warnings from Visual Studio /W3 | Roberto Ierusalimschy | 2017-11-30 | 1 | -2/+2 |
| | |||||
* | detail (typo in comments) | Roberto Ierusalimschy | 2017-11-23 | 1 | -3/+3 |
| | |||||
* | back to 'CallInfo' (no gains with its removal) | Roberto Ierusalimschy | 2017-11-07 | 1 | -3/+3 |
| | |||||
* | more fields moved out of 'CallInfo' | Roberto Ierusalimschy | 2017-11-03 | 1 | -3/+3 |
| | |||||
* | do not mess up the debt when the collector is not running | Roberto Ierusalimschy | 2017-10-31 | 1 | -7/+7 |
| | |||||
* | some cleaning in GC parameters | Roberto Ierusalimschy | 2017-10-11 | 1 | -14/+12 |
| | |||||
* | bug: dead keys with nil values can stay in weak tables | Roberto Ierusalimschy | 2017-08-31 | 1 | -10/+11 |
| | |||||
* | new type 'StackValue' for stack elements | Roberto Ierusalimschy | 2017-06-29 | 1 | -5/+5 |
| | | | | (we may want to put extra info there in the future) | ||||
* | no more 'DEADKEY'. Table traversals do not need to consider dead keys; | Roberto Ierusalimschy | 2017-06-12 | 1 | -14/+7 |
| | | | | | | if the key is dead, it cannot be given to 'next'. Instead, we now use a 'table' tag without the collectable bit, which makes it a unique tag good enough to reserve space. | ||||
* | in hash nodes, keys are stored in separate pieces to avoid wasting | Roberto Ierusalimschy | 2017-06-09 | 1 | -19/+23 |
| | | | | space with alignments | ||||
* | avoid overflows in computation of step size | Roberto Ierusalimschy | 2017-06-01 | 1 | -2/+4 |
| | |||||
* | revamping the incremental collector | Roberto Ierusalimschy | 2017-05-26 | 1 | -146/+132 |
| | | | | | | Some simplifications (not counting bytes, couting only slots visited; no more 'gcfinnum'); more GC parameters; using vararg in 'lua_gc' to set parameters in different GC modes | ||||
* | barrier for prototype's cache (with new gray list 'protogray' to keep | Roberto Ierusalimschy | 2017-05-04 | 1 | -8/+67 |
| | | | | prototypes to have their caches visited again) + constant 'MAXMISS' | ||||
* | added 'cachemiss' field to prototype to avoid wasting time checking | Roberto Ierusalimschy | 2017-04-30 | 1 | -1/+2 |
| | | | | hits that fail too often | ||||
* | ensures that "collectgarbage'step'" in generational mode does a | Roberto Ierusalimschy | 2017-04-24 | 1 | -4/+9 |
| | | | | minor collection | ||||
* | 'KGC_NORMAL' -> 'KGC_INC' + emergency GC signalled by flag (instead | Roberto Ierusalimschy | 2017-04-24 | 1 | -12/+11 |
| | | | | of mode) | ||||
* | small bug in generational control | Roberto Ierusalimschy | 2017-04-20 | 1 | -5/+6 |
| | |||||
* | first version of control for the generational collector | Roberto Ierusalimschy | 2017-04-19 | 1 | -5/+13 |
| | |||||
* | small corrections + removal of debugging functions 'count' and | Roberto Ierusalimschy | 2017-04-12 | 1 | -48/+4 |
| | | | | 'printgray'. | ||||
* | 'mainthread' lives in 'allgc' list, like everybody else | Roberto Ierusalimschy | 2017-04-11 | 1 | -10/+6 |
| | |||||
* | Upvalues collected like everything else (with mark-sweep) instead | Roberto Ierusalimschy | 2017-04-11 | 1 | -57/+32 |
| | | | | of reference count (simpler and better for generational mode) | ||||
* | Comments for generational collector | Roberto Ierusalimschy | 2017-04-10 | 1 | -63/+128 |
| | |||||
* | small changes in 'luaC_upvalbarrier' | Roberto Ierusalimschy | 2017-04-06 | 1 | -5/+3 |
| | |||||
* | generational collector (still not complete) | Roberto Ierusalimschy | 2017-04-05 | 1 | -83/+276 |
| |