Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | Bug: finalizer calling exit can corrupt finalization order | Roberto Ierusalimschy | 2021-12-22 | 1 | -0/+1 |
| | | | | | 'os.exit' can call lua_close again, separating new finalizers created after all previous finalizers were already separated. | ||||
* | Bug: GC is not reentrant | Roberto Ierusalimschy | 2021-12-13 | 1 | -0/+9 |
| | | | | As the GC is not reentrant, finalizers should not be able to invoke it. | ||||
* | Small changes in macros that change GC colors | Roberto Ierusalimschy | 2020-08-13 | 1 | -11/+12 |
| | | | | | | | | | | | | | - Macro 'gray2black' was renamed 'nw2black' (Non-White to black), as it was already being used on objects that could be already black. - Macros 'white2gray' and 'black2gray' were unified in 'set2gray'; no reason to have two macros when one will do and, again, 'black2gray' was already being used on objects that could be already gray. Moreover, macros 'maskcolors' and 'maskgcbits' were negated to have ones in the described bits, instead of zeros. (This naming seems more intuitive.) | ||||
* | Better tests for gray lists | Roberto Ierusalimschy | 2020-08-07 | 1 | -1/+4 |
| | | | | | Test uses an extra bit in 'marked' to mark all elements in gray lists and then check against elements colored gray. | ||||
* | Free bit 7 of GC 'marked' field | Roberto Ierusalimschy | 2020-08-07 | 1 | -2/+1 |
| | | | | | | | | Tables were using this bit to indicate their array sizes were real ('isrealasize'), but this bit can be useful for tests. Instead, they can use bit 7 of their 'flag' field for that purpose. (There are only six fast-access metamethods.) This 'flag' field only exists in tables, so this use does not affect other types. | ||||
* | Avoid the creation of too many strings in 'package' | Roberto Ierusalimschy | 2019-05-03 | 1 | -1/+1 |
| | | | | | | | | | Both when setting a path and searching for a file ('searchpath'), this commit reduces the number of intermediate strings created in Lua. (For setting a path the change is not relevant, because this is done only twice when loading the module. Anyway, it is a nice example of how to use auxlib buffers to manipulate strings in the C API.) | ||||
* | After a "bad collections", avoid switching back back to generational | Roberto Ierusalimschy | 2019-01-30 | 1 | -1/+8 |
| | | | | | | | 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). | ||||
* | Removed internal cache for closures | Roberto Ierusalimschy | 2018-11-01 | 1 | -4/+0 |
| | | | | | | | | | | | | | | | | | | | 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.) | ||||
* | Removed extra information from RCS keyword strings | Roberto Ierusalimschy | 2018-08-23 | 1 | -1/+1 |
| | | | | | Version numbers and dates (mostly wrong) from RCS keyword strings removed from all source files; only the file name are kept. | ||||
* | no more 'TESTGRAYBIT' (to free this bit for real uses) | Roberto Ierusalimschy | 2018-06-11 | 1 | -3/+4 |
| | |||||
* | more generic way to handle 'gclist' | Roberto Ierusalimschy | 2018-02-19 | 1 | -2/+2 |
| | |||||
* | default for minor collection intervals a little larger | Roberto Ierusalimschy | 2018-02-05 | 1 | -4/+4 |
| | |||||
* | janitor work on casts | Roberto Ierusalimschy | 2018-01-28 | 1 | -3/+3 |
| | |||||
* | some cleaning in GC parameters | Roberto Ierusalimschy | 2017-10-11 | 1 | -4/+14 |
| | |||||
* | revamping the incremental collector | Roberto Ierusalimschy | 2017-05-26 | 1 | -9/+11 |
| | | | | | | 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 | -1/+5 |
| | | | | prototypes to have their caches visited again) + constant 'MAXMISS' | ||||
* | Upvalues collected like everything else (with mark-sweep) instead | Roberto Ierusalimschy | 2017-04-11 | 1 | -9/+1 |
| | | | | of reference count (simpler and better for generational mode) | ||||
* | Comments for generational collector | Roberto Ierusalimschy | 2017-04-10 | 1 | -3/+3 |
| | |||||
* | small changes in 'luaC_upvalbarrier' | Roberto Ierusalimschy | 2017-04-06 | 1 | -4/+4 |
| | |||||
* | generational collector (still not complete) | Roberto Ierusalimschy | 2017-04-05 | 1 | -15/+39 |
| | |||||
* | generational collection: new attempt (still incomplete) | Roberto Ierusalimschy | 2017-02-23 | 1 | -3/+6 |
| | |||||
* | avoid empty macro arguments (invalid in C89) | Roberto Ierusalimschy | 2015-12-21 | 1 | -2/+2 |
| | |||||
* | 'condchangemem' also may need to run 'pre'/'pos' | Roberto Ierusalimschy | 2015-10-21 | 1 | -2/+3 |
| | |||||
* | added comments | Roberto Ierusalimschy | 2015-10-20 | 1 | -1/+8 |
| | |||||
* | cleaner definition for 'luaC_condGC', using 'pre'/'pos' parameters | Roberto Ierusalimschy | 2015-10-20 | 1 | -4/+5 |
| | |||||
* | barrier macros rewritten as expressions | Roberto Ierusalimschy | 2015-08-03 | 1 | -13/+13 |
| | |||||
* | `name' in comments changed to 'name' | Roberto Ierusalimschy | 2014-10-25 | 1 | -2/+2 |
| | |||||
* | 'iswhite' and related macros now can work directly on any object | Roberto Ierusalimschy | 2014-07-19 | 1 | -4/+4 |
| | | | | (no need to convert to 'GCObject') | ||||
* | put the restriction that 'luaC_barrierback' works only on tables | Roberto Ierusalimschy | 2014-07-19 | 1 | -3/+3 |
| | | | | in its prototype | ||||
* | no need for field 'gch' anymore | Roberto Ierusalimschy | 2014-07-17 | 1 | -8/+8 |
| | |||||
* | detail (removed unused prototype) | Roberto Ierusalimschy | 2014-03-19 | 1 | -2/+1 |
| | |||||
* | no need to keep threads in a different GC list, now that there is the | Roberto Ierusalimschy | 2014-02-18 | 1 | -7/+6 |
| | | | | 'twups' list | ||||
* | change in the way 'collectgarbage("step", size)' interprets 'size' | Roberto Ierusalimschy | 2014-02-14 | 1 | -2/+1 |
| | | | | | (mimicking the way the GC itself behaves when Lua allocates 'size' Kbytes) | ||||
* | better control for number of finalizers called at each GC cycle | Roberto Ierusalimschy | 2014-02-13 | 1 | -2/+3 |
| | | | | (increases progressively) | ||||
* | no more local collection | Roberto Ierusalimschy | 2014-02-13 | 1 | -20/+11 |
| | |||||
* | keep a single list of objects to be finalized (with local and non-local | Roberto Ierusalimschy | 2014-02-11 | 1 | -8/+7 |
| | | | | objects), to ensure finalization order | ||||
* | detail (setmetatable do not need to use a back GC barrier) | Roberto Ierusalimschy | 2013-09-11 | 1 | -5/+1 |
| | |||||
* | new names and better order for GC states (sweep first lists that | Roberto Ierusalimschy | 2013-09-11 | 1 | -9/+9 |
| | | | | can have dead objects) | ||||
* | threads are kept in a separated GC list, linked after the main thread | Roberto Ierusalimschy | 2013-09-11 | 1 | -4/+5 |
| | |||||
* | objects in list 'tobefnz' have a GC life-cycle like all others | Roberto Ierusalimschy | 2013-09-11 | 1 | -3/+4 |
| | | | | (specifically they are cleaned during sweep phase) | ||||
* | 'luaC_newobj' does not handle special cases; only special case | Roberto Ierusalimschy | 2013-09-11 | 1 | -6/+5 |
| | | | | now is threads, which do not use 'luaC_newobj' anymore. | ||||
* | local collection now calls finalizers | Roberto Ierusalimschy | 2013-09-03 | 1 | -5/+6 |
| | |||||
* | new GC state to sweep 'localgc' list + small changes in sweep control | Roberto Ierusalimschy | 2013-08-30 | 1 | -5/+7 |
| | |||||
* | details (a few casts moved from macro invocation to macro definition) | Roberto Ierusalimschy | 2013-08-29 | 1 | -3/+3 |
| | |||||
* | LOCALBLACK changed to LOCALMARK and used also to control whether object | Roberto Ierusalimschy | 2013-08-27 | 1 | -2/+2 |
| | | | | | is in 'localgc' list + luaC_newobj by default puts object in 'localgc' list | ||||
* | upvalues collected by reference count | Roberto Ierusalimschy | 2013-08-27 | 1 | -4/+10 |
| | |||||
* | C functions and strings now go to the local list; first version | Roberto Ierusalimschy | 2013-08-23 | 1 | -1/+2 |
| | | | | of the local collector | ||||
* | "fixed" objects kept in a separated list (instead of being kept in | Roberto Ierusalimschy | 2013-08-21 | 1 | -3/+3 |
| | | | | 'allgc' list with a bit marking them) | ||||
* | change in string table: string table is now independent of GC lists; all | Roberto Ierusalimschy | 2013-08-21 | 1 | -6/+5 |
| | | | | strings live in 'normal' GC lists | ||||
* | GC bits SEPARATED and FINALIZEDBIT mixed in FINALIZEDBIT (with simpler | Roberto Ierusalimschy | 2013-08-20 | 1 | -5/+5 |
| | | | | control) |