aboutsummaryrefslogtreecommitdiff
path: root/lgc.c (follow)
Commit message (Collapse)AuthorAgeFilesLines
...
* Towards "to closed" local variablesRoberto Ierusalimschy2018-10-081-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 agesRoberto Ierusalimschy2018-07-181-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 userdataRoberto Ierusalimschy2018-07-131-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 collectionRoberto Ierusalimschy2018-07-091-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 canRoberto Ierusalimschy2018-06-151-6/+9
| | | | be used as a hint for '#t'
* FALLTHROUGH comment must be last "statement"Roberto Ierusalimschy2018-03-161-3/+3
| | | | (so it does not work when inside a block)
* special compact representation for userdata with no user valuesRoberto Ierusalimschy2018-02-261-3/+16
| | | | (a common case)
* in 'clearbykeys', clear keys of just-removed entries tooRoberto Ierusalimschy2018-02-231-3/+3
|
* first version of empty entries in tablesRoberto Ierusalimschy2018-02-231-28/+30
| | | | (so that, in the future, tables can contain regular nil entries)
* some reorganization in 'lobject.h'Roberto Ierusalimschy2018-02-221-1/+6
| | | | (just moving stuff around)
* userdata can have multiple user valuesRoberto Ierusalimschy2018-02-201-16/+17
|
* more generic way to handle 'gclist'Roberto Ierusalimschy2018-02-191-62/+50
|
* small corrections in generational modeRoberto Ierusalimschy2018-02-051-7/+9
| | | | | (cannot call finalizers in emergency collections + should set everything before calling finalizers)
* janitor work on castsRoberto Ierusalimschy2018-01-281-2/+2
|
* keep control of stack top in Lua functions concentrated in 'luaV_execute'Roberto Ierusalimschy2017-12-281-8/+3
|
* when running Lua code, there is no need to keep 'L->top' "correct";Roberto Ierusalimschy2017-12-201-2/+12
| | | | set it only when needed.
* more freedom in handling memory-allocation errors (not all allocationsRoberto Ierusalimschy2017-12-081-8/+3
| | | | | automatically raise an error), which allows fixing a bug when resizing a table.
* 'luaS_resize' can raise memory errorsRoberto Ierusalimschy2017-12-011-4/+9
|
* warnings from Visual Studio /W3Roberto Ierusalimschy2017-11-301-2/+2
|
* detail (typo in comments)Roberto Ierusalimschy2017-11-231-3/+3
|
* back to 'CallInfo' (no gains with its removal)Roberto Ierusalimschy2017-11-071-3/+3
|
* more fields moved out of 'CallInfo'Roberto Ierusalimschy2017-11-031-3/+3
|
* do not mess up the debt when the collector is not runningRoberto Ierusalimschy2017-10-311-7/+7
|
* some cleaning in GC parametersRoberto Ierusalimschy2017-10-111-14/+12
|
* bug: dead keys with nil values can stay in weak tablesRoberto Ierusalimschy2017-08-311-10/+11
|
* new type 'StackValue' for stack elementsRoberto Ierusalimschy2017-06-291-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 Ierusalimschy2017-06-121-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 wastingRoberto Ierusalimschy2017-06-091-19/+23
| | | | space with alignments
* avoid overflows in computation of step sizeRoberto Ierusalimschy2017-06-011-2/+4
|
* revamping the incremental collectorRoberto Ierusalimschy2017-05-261-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 keepRoberto Ierusalimschy2017-05-041-8/+67
| | | | prototypes to have their caches visited again) + constant 'MAXMISS'
* added 'cachemiss' field to prototype to avoid wasting time checkingRoberto Ierusalimschy2017-04-301-1/+2
| | | | hits that fail too often
* ensures that "collectgarbage'step'" in generational mode does aRoberto Ierusalimschy2017-04-241-4/+9
| | | | minor collection
* 'KGC_NORMAL' -> 'KGC_INC' + emergency GC signalled by flag (insteadRoberto Ierusalimschy2017-04-241-12/+11
| | | | of mode)
* small bug in generational controlRoberto Ierusalimschy2017-04-201-5/+6
|
* first version of control for the generational collectorRoberto Ierusalimschy2017-04-191-5/+13
|
* small corrections + removal of debugging functions 'count' andRoberto Ierusalimschy2017-04-121-48/+4
| | | | 'printgray'.
* 'mainthread' lives in 'allgc' list, like everybody elseRoberto Ierusalimschy2017-04-111-10/+6
|
* Upvalues collected like everything else (with mark-sweep) insteadRoberto Ierusalimschy2017-04-111-57/+32
| | | | of reference count (simpler and better for generational mode)
* Comments for generational collectorRoberto Ierusalimschy2017-04-101-63/+128
|
* small changes in 'luaC_upvalbarrier'Roberto Ierusalimschy2017-04-061-5/+3
|
* generational collector (still not complete)Roberto Ierusalimschy2017-04-051-83/+276
|
* generational collection: new attempt (still incomplete)Roberto Ierusalimschy2017-02-231-24/+159
|
* detail (removing spaces at end of lines)Roberto Ierusalimschy2016-12-221-2/+2
|
* using 'lastfree == NULL' to signal that table is using the dummyRoberto Ierusalimschy2016-11-071-2/+2
| | | | node for its hash part + new macro 'allocsizenode'
* new flag in 'CallInfo.callstatus' to tell whether function is runningRoberto Ierusalimschy2016-10-191-1/+3
| | | | as a finalizer
* do not try to ensure that 'sweepgc' points to a live objectRoberto Ierusalimschy2016-03-311-18/+11
| | | | | | when entering sweep phase ('entersweep'); that may be too expensive to be done still inside the atomic step. Walking one single object more often than not will work.
* detail (removed fixed argument to function 'callallpendingfinalizers')Roberto Ierusalimschy2015-12-101-4/+4
|
* added comment and assert about dead keysRoberto Ierusalimschy2015-11-031-3/+8
|
* in 'luaD_call', use two functions instead of one with fixed booleanRoberto Ierusalimschy2015-11-021-2/+2
| | | | argument