mirror of
https://github.com/python/cpython.git
synced 2025-08-04 08:59:19 +00:00
GH-108362: Incremental GC implementation (GH-108038)
This commit is contained in:
parent
b4ba0f73d6
commit
36518e69d7
13 changed files with 701 additions and 446 deletions
|
@ -158,17 +158,12 @@ gc_set_threshold_impl(PyObject *module, int threshold0, int group_right_1,
|
|||
{
|
||||
GCState *gcstate = get_gc_state();
|
||||
|
||||
gcstate->generations[0].threshold = threshold0;
|
||||
gcstate->young.threshold = threshold0;
|
||||
if (group_right_1) {
|
||||
gcstate->generations[1].threshold = threshold1;
|
||||
gcstate->old[0].threshold = threshold1;
|
||||
}
|
||||
if (group_right_2) {
|
||||
gcstate->generations[2].threshold = threshold2;
|
||||
|
||||
/* generations higher than 2 get the same threshold */
|
||||
for (int i = 3; i < NUM_GENERATIONS; i++) {
|
||||
gcstate->generations[i].threshold = gcstate->generations[2].threshold;
|
||||
}
|
||||
gcstate->old[1].threshold = threshold2;
|
||||
}
|
||||
Py_RETURN_NONE;
|
||||
}
|
||||
|
@ -185,9 +180,9 @@ gc_get_threshold_impl(PyObject *module)
|
|||
{
|
||||
GCState *gcstate = get_gc_state();
|
||||
return Py_BuildValue("(iii)",
|
||||
gcstate->generations[0].threshold,
|
||||
gcstate->generations[1].threshold,
|
||||
gcstate->generations[2].threshold);
|
||||
gcstate->young.threshold,
|
||||
gcstate->old[0].threshold,
|
||||
0);
|
||||
}
|
||||
|
||||
/*[clinic input]
|
||||
|
@ -202,9 +197,9 @@ gc_get_count_impl(PyObject *module)
|
|||
{
|
||||
GCState *gcstate = get_gc_state();
|
||||
return Py_BuildValue("(iii)",
|
||||
gcstate->generations[0].count,
|
||||
gcstate->generations[1].count,
|
||||
gcstate->generations[2].count);
|
||||
gcstate->young.count,
|
||||
gcstate->old[gcstate->visited_space].count,
|
||||
gcstate->old[gcstate->visited_space^1].count);
|
||||
}
|
||||
|
||||
/*[clinic input]
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue