зеркало из https://github.com/github/ruby.git
rb_hash_transient_heap_evacuate: do not goto into a branch
I'm not necessarily against every goto in general, but jumping into a branch is definitely a bad idea. Better refactor.
This commit is contained in:
Родитель
5f60538245
Коммит
1e8461424c
9
hash.c
9
hash.c
|
@ -1288,15 +1288,14 @@ rb_hash_transient_heap_evacuate(VALUE hash, int promote)
|
|||
return;
|
||||
}
|
||||
HASH_ASSERT(old_tab != NULL);
|
||||
if (! promote) {
|
||||
new_tab = rb_transient_heap_alloc(hash, sizeof(ar_table));
|
||||
if (new_tab == NULL) promote = true;
|
||||
}
|
||||
if (promote) {
|
||||
promote:
|
||||
new_tab = ruby_xmalloc(sizeof(ar_table));
|
||||
RHASH_UNSET_TRANSIENT_FLAG(hash);
|
||||
}
|
||||
else {
|
||||
new_tab = rb_transient_heap_alloc(hash, sizeof(ar_table));
|
||||
if (new_tab == NULL) goto promote;
|
||||
}
|
||||
*new_tab = *old_tab;
|
||||
hash_ar_table_set(hash, new_tab);
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче