Roberto Ierusalimschy
788a0ecd27
'luaC_separateudata' renamed to 'separatetobefnz' and called only
...
from 'lgc.c'
2011-10-03 14:54:25 -03:00
Roberto Ierusalimschy
bc90cf4b83
retraverse all gray lists together to avoid traversing some weak
...
tables twice (as they may change lists when traversed)
2011-10-03 13:22:05 -03:00
Roberto Ierusalimschy
87912786af
dead objects are not collectable.
2011-09-24 18:12:01 -03:00
Roberto Ierusalimschy
95ed6c1127
better(?) scheme for cleaning weak tables; all ressurected objects
...
are removed from weak values before finalization
2011-09-24 18:00:40 -03:00
Roberto Ierusalimschy
45c346645c
avoid clearing ephemeron tables that have nothing to be cleaned
...
(no white elements)
2011-09-19 14:03:38 -03:00
Roberto Ierusalimschy
74b0bb3a45
macro 'checkconsistency' moved to this file, as it is used only
...
here
2011-05-05 16:42:25 -03:00
Roberto Ierusalimschy
868ff40339
full collection does not restart collector + avoid changing GC
...
state if an error happens in a step
2010-12-29 16:00:23 -02:00
Roberto Ierusalimschy
551b076f1c
change in the relationship between totalbytes and GCdebt - luaM_realloc_
...
is too critical to update two counters
2010-12-20 17:40:07 -02:00
Roberto Ierusalimschy
737f119187
better control for GC running or stopped
2010-12-20 16:17:46 -02:00
Roberto Ierusalimschy
350cc4bcb6
'micro' bug: when closing state, old objects are finalized (breaking
...
assertion)
2010-12-03 09:48:25 -02:00
Roberto Ierusalimschy
9b7a12c46d
finalizers (__gc) for tables
2010-11-26 12:32:31 -02:00
Roberto Ierusalimschy
4590a89b32
corrected warnings from different compilers (mostly casts and small
...
details)
2010-10-25 17:01:37 -02:00
Roberto Ierusalimschy
6828f6d427
new parameter 'majorinc' to control frequency of major collections
...
in generational mode
2010-09-03 11:14:01 -03:00
Roberto Ierusalimschy
a71c5f6f53
typo in comments
2010-06-30 11:11:17 -03:00
Roberto Ierusalimschy
d9ea6eca7c
macro 'key2tal' replaced by 'gkey' (as both were equal)
2010-06-25 09:18:10 -03:00
Roberto Ierusalimschy
fabe4ec487
better barrier for prototypes
2010-06-07 13:55:34 -03:00
Roberto Ierusalimschy
575074fd85
Lua closures are cached for reuse
2010-06-04 10:25:10 -03:00
Roberto Ierusalimschy
e94fac8956
bug: generational collection was not running collector! (must write
...
a test for this...)
2010-06-02 15:36:58 -03:00
Roberto Ierusalimschy
3d45a8eb1c
really stop collection during finalizers
2010-05-17 17:39:31 -03:00
Roberto Ierusalimschy
4fd76b8148
avoid "strong" cast
2010-05-11 17:49:26 -03:00
Roberto Ierusalimschy
1c1a98e872
corrected some places where an old object could end up in front
...
of a new one + minimal documentation about this problem
2010-05-10 15:23:45 -03:00
Roberto Ierusalimschy
c006f085d9
new macro 'resetoldbit'
2010-05-10 13:46:49 -03:00
Roberto Ierusalimschy
de97177744
avoid 'else assert' (which may result in an empty else)
2010-05-07 15:43:24 -03:00
Roberto Ierusalimschy
0fac33da9e
bug: incremental sweep was not cleaning old bits (as it stopped in the
...
first old object) + bug: moving udata to 'udgc' list might put old
object in front a new one + some new macros + generational mode may
be in 'pause' state (it just skips 'markroot')
2010-05-07 15:19:36 -03:00
Roberto Ierusalimschy
25951e0ea5
some cleaning in 'sweeplist' (threads do not need to be traversed
...
if they are going to be collected + use of bit masks to unify
differences in generational and incremental modes)
2010-05-06 15:18:07 -03:00
Roberto Ierusalimschy
d2ea5b00b7
new function 'luaC_changemode' +
...
bug: objects entering the 'allgc' list must have their OLDBIT cleared
(upvalues being cleared) + bug: in 'checkSizes', KGC_EMERGENCY is
stored in 'gckind' field, not in 'gcstate' + current white changes when
entering sweep phase (so there are dead objects only in that phase)
2010-05-05 15:58:36 -03:00
Roberto Ierusalimschy
7444b5a1d5
better documentation of GC costs
2010-05-05 10:39:58 -03:00
Roberto Ierusalimschy
3e662cec89
full GC must run finalizers only after finishing everything else
...
(including a return to generational mode if needed)
2010-05-04 15:09:06 -03:00
Roberto Ierusalimschy
aa73403ba4
no need of a KGC_FORCED collection kind; it has the same behavior of
...
a normal collection
2010-05-03 14:39:48 -03:00
Roberto Ierusalimschy
0c27de2e7b
no more 'finalize' phase in GC; finalizers are called along the
...
entire cycle
2010-05-03 14:33:39 -03:00
Roberto Ierusalimschy
d25f7f9d78
items in 'tobefnz' are kept black (as before recent change) and changed
...
to white only when needed (being moved to 'allgc' when not keeping
invariant).
2010-05-03 08:55:40 -03:00
Roberto Ierusalimschy
4d871ee973
"gray lists" only need to be valid when 'keepinvariant' is true
2010-04-30 15:37:14 -03:00
Roberto Ierusalimschy
23001d8607
nasty GC bug: upvalue must be turned white when not keeping invariant,
...
but barrier was not being called when uv->v were already white.
2010-04-29 18:43:36 -03:00
Roberto Ierusalimschy
aaa5d7adab
'luaC_linkupval' moved into 'lfunc.c' code + new way to control GC speed
2010-04-29 14:32:40 -03:00
Roberto Ierusalimschy
00114a95b2
lots of new comments + small changes in loop controls + other small
...
"janitor work"
2010-04-26 14:58:00 -03:00
Roberto Ierusalimschy
4aaf0ef75c
"to-be-finalized" objects marked and sweeped like all other objects
2010-04-20 17:15:30 -03:00
Roberto Ierusalimschy
d20ff60615
new macro LUA_NUMTAGS
2010-04-12 13:07:29 -03:00
Roberto Ierusalimschy
a09c8d7beb
cannot sweep main thread in sweepstring phase
2010-04-05 11:15:35 -03:00
Roberto Ierusalimschy
e54668b696
added proper code to trace garbage collection
2010-04-02 11:37:41 -03:00
Roberto Ierusalimschy
a8d3aa14fd
global table now is only kept in the registry
2010-03-29 14:43:14 -03:00
Roberto Ierusalimschy
064e406f67
no more fenvs!
2010-03-26 17:58:11 -03:00
Roberto Ierusalimschy
5c87f61e6b
major collections in generational mode
2010-03-25 16:37:23 -03:00
Roberto Ierusalimschy
3aa9598177
'mainthread' is not inserted in the 'allgc' list anymore, but swept
...
separately.
2010-03-25 10:06:36 -03:00
Roberto Ierusalimschy
64d39ed1b6
generational mode no longer sweep old objects
2010-03-24 12:51:10 -03:00
Roberto Ierusalimschy
4433dbb5f5
userdata with finalizers are kept in a separated list ('udgc'), instead
...
of at the end of 'rootgc' (which was renamed to 'allgc', as it is not
"root" in the usual meaning for collectors)
2010-03-24 10:07:01 -03:00
Roberto Ierusalimschy
5cb128ea54
BUG: emergency collector might resize 'strt' (string table) when
...
creating a new string
+ atomic and markroot steps has some cost
+ full collection must leave collector in proper state when mode
is generational
2010-03-23 17:16:06 -03:00
Roberto Ierusalimschy
74123e9686
draft version of a generational mode for garbage collection. (Not well
...
tested; no major collections; ...)
2010-03-22 15:28:03 -03:00
Roberto Ierusalimschy
f84b575cfa
no more pseudoindex LUA_GLOBALSINDEX; global table now accessible
...
through registry
2009-12-22 13:32:50 -02:00
Roberto Ierusalimschy
0bbdddc86b
allocator function receives the tag of object being allocated in 'osize'
...
when 'ptr' is NULL.
2009-12-17 13:46:44 -02:00
Roberto Ierusalimschy
8da245bfd2
better to keep GC state numbers sequential, to optimize switch in
...
'singlestep'
2009-12-11 19:31:14 -02:00