| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
| |
All-weak tables are not being revisited after being visited during
propagation; if it gets a new metatable after that, the new metatable
may not be marked.
|
| |
|
|
|
| |
Check the mode in a separate function (getmode), instead of using
comma expressions inside the 'if' condition.
|
| | |
|
| |
|
|
|
|
| |
In generational collection, objects marked as touched1 stay in gray
lists between collections. This commit fixes a bug introduced in
commit 808976bb59.
|
| |
|
|
|
|
| |
After a weak table is traversed in the atomic phase, if it does not
have white values ('hasclears') it does not need to be retraversed
again. (Comments were correct, but code did not agree with them.)
|
| |
|
|
|
| |
They were already allocated as a single block, so there is no need
for the global_State to point to its main thread.
|
| | |
|
| |
|
|
| |
New year (2024->2025), typos in comments
|
| |
|
|
|
|
|
|
|
|
| |
Instead of using 'alimit' for keeping the size of the array and at
the same time being a hint for '#t', a table now keeps these two
values separate. The Table structure has a field 'asize' with the
size of the array, while the length hint is kept in the array itself.
That way, tables with no array part waste no space with that field.
Moreover, the space for the hint may have zero cost for small arrays,
if the array of tags plus the hint still fits in a single word.
|
| |
|
|
| |
Sums of size_t may not fit in a size_t.
|
| | |
|
| |
|
|
| |
Plus, function was renamed to 'luaE_threadsize'.
|
| | |
|
| |
|
|
| |
Plus extra comments and other details.
|
| | |
|
| |
|
|
| |
Memory is the resource we want to save. Still to be reviewed again.
|
| |
|
|
|
| |
All fields in the global state that control the pace of the garbage
collector prefixed with 'GC'.
|
| |
|
|
|
| |
No warnings for standard numerical types. Still pending alternative
numerical types.
|
| |
|
|
|
| |
Corrections in comments and manual. Added note in the manual about
local variables in the REPL.
|
| | |
|
| |
|
|
| |
Negligible performance gains don't justify extra complexity.
|
| |
|
|
|
| |
A few operations on arrays can be performed "in bulk", treating all
tags of a cell as a simple (or a few) word(s).
|
| |
|
|
| |
That constant was already deprecated (see commit 6aabf4b15e7).
|
| | |
|
| |
|
|
|
|
| |
The generational mode also uses the parameters for the incremental
mode in its major collections, so it should be easy to change those
parameters without having to change the GC mode.
|
| |
|
|
|
| |
This encoding brings more precision and a larger range for these
parameters.
|
| | |
|
| |
|
|
|
| |
It does not make sense to wait for another cycle to decide when much of
the information about creation of old objects is already available.
|
| | |
|
| |
|
|
|
| |
Major collections do not need to "stop the world". Still pending:
criteria for shifts minor-major, shifts generational-incremental.
|
| |
|
|
|
| |
It is simpler to use always 'setage'. The saving from 'changeage'
is too irrelevant.
|
| |
|
|
| |
Plus other comments and small details.
|
| |
|
|
| |
Strings can use external buffers to store their contents.
|
| |
|
|
| |
Long strings have a pointer to string contents.
|
| |\ |
|
| | |\ |
|
| | | | |
|
| | | | |
|
| |\ \ \
| | |/
| |/| |
|
| | | |
| | |
| | |
| | |
| | | |
We may want to add other string variants in the future; this change
documents better where the code may need to handle those variants.
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | | |
Although stack resize can be a little expensive, it seems unusual to
have too many threads needing resize during one GC cycle. On the other
hand, the change allows full collections to skip the propagate phase,
going straight from a pause to the atomic phase.
|
| | |/
| |
| |
| |
| | |
Several functions that were already being used only inside their
own file have been declared as 'static'.
|
| | |
| |
| |
| |
| | |
'collectgarbage("step")' (without an argument) does not have any
special meaning, it means "do a step with some default size".
|
| | |
| |
| |
| | |
Positive debts seems more natural then negative ones.
|
| | |
| |
| |
| |
| | |
More uniformity when handling GC parameters + avoid divisions by 100
when applying them.
|
| |\| |
|
| | | |
|
| | |
| |
| |
| |
| | |
Each incremental step has always the same size (stepsize), and the
debt for next step also is always the same.
|
| | | |
|
| | |
| |
| |
| |
| | |
Function calls do not create new objects. (It may use memory with
stack reallocation, but now that is irrelevant to the GC.)
|