mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
Improve performance of embedded string allocation
Non-VWA embedded string allocation had a performance regression. This commit improves performance of non-VWA embedded string allocation.
This commit is contained in:
parent
dff8d12226
commit
7cfacbcad2
Notes:
git
2021-11-27 03:28:00 +09:00
1 changed files with 2 additions and 3 deletions
5
string.c
5
string.c
|
@ -1739,7 +1739,6 @@ str_duplicate_setup(VALUE klass, VALUE str, VALUE dup)
|
|||
assert(str_embed_capa(dup) >= len + 1);
|
||||
STR_SET_EMBED_LEN(dup, len);
|
||||
MEMCPY(RSTRING(dup)->as.embed.ary, RSTRING(str)->as.embed.ary, char, len + 1);
|
||||
flags &= ~RSTRING_NOEMBED;
|
||||
}
|
||||
else {
|
||||
VALUE root = str;
|
||||
|
@ -1781,7 +1780,7 @@ static inline VALUE
|
|||
ec_str_duplicate(struct rb_execution_context_struct *ec, VALUE klass, VALUE str)
|
||||
{
|
||||
VALUE dup;
|
||||
if (FL_TEST(str, STR_NOEMBED)) {
|
||||
if (!USE_RVARGC || FL_TEST(str, STR_NOEMBED)) {
|
||||
dup = ec_str_alloc_heap(ec, klass);
|
||||
}
|
||||
else {
|
||||
|
@ -1795,7 +1794,7 @@ static inline VALUE
|
|||
str_duplicate(VALUE klass, VALUE str)
|
||||
{
|
||||
VALUE dup;
|
||||
if (FL_TEST(str, STR_NOEMBED)) {
|
||||
if (!USE_RVARGC || FL_TEST(str, STR_NOEMBED)) {
|
||||
dup = str_alloc_heap(klass);
|
||||
}
|
||||
else {
|
||||
|
|
Loading…
Reference in a new issue