зеркало из https://github.com/github/ruby.git
Output compaction stats in one loop / eliminate 0 counts
We only need to loop `T_MASK` times once. Also, not every value between 0 and `T_MASK` is an actual Ruby type. Before this change, some integers were being added to the result hash even though they aren't actual types. This patch omits considered / moved entries that total 0, cleaning up the result hash and eliminating these "fake types".
This commit is contained in:
Родитель
5c2508060b
Коммит
5ef019e8af
4
gc.c
4
gc.c
|
@ -8509,12 +8509,14 @@ gc_compact_stats(rb_objspace_t *objspace)
|
|||
VALUE moved = rb_hash_new();
|
||||
|
||||
for (i=0; i<T_MASK; i++) {
|
||||
if(objspace->rcompactor.considered_count_table[i]) {
|
||||
rb_hash_aset(considered, type_sym(i), SIZET2NUM(objspace->rcompactor.considered_count_table[i]));
|
||||
}
|
||||
|
||||
for (i=0; i<T_MASK; i++) {
|
||||
if(objspace->rcompactor.moved_count_table[i]) {
|
||||
rb_hash_aset(moved, type_sym(i), SIZET2NUM(objspace->rcompactor.moved_count_table[i]));
|
||||
}
|
||||
}
|
||||
|
||||
rb_hash_aset(h, ID2SYM(rb_intern("considered")), considered);
|
||||
rb_hash_aset(h, ID2SYM(rb_intern("moved")), moved);
|
||||
|
|
Загрузка…
Ссылка в новой задаче