mirror of
https://github.com/ruby/ruby.git
synced 2025-08-15 13:39:04 +02:00
Remove MIN_PRE_ALLOC_SIZE from Strings.
This optimisation is no longer helpful now that we use VWA to allocate strings in larger size pools where they can be embedded.
This commit is contained in:
parent
fc7f852033
commit
bb5fddd070
Notes:
git
2023-01-13 15:32:06 +00:00
2 changed files with 25 additions and 13 deletions
17
string.c
17
string.c
|
@ -3340,28 +3340,19 @@ rb_str_append(VALUE str, VALUE str2)
|
|||
return rb_str_buf_append(str, str2);
|
||||
}
|
||||
|
||||
#define MIN_PRE_ALLOC_SIZE 48
|
||||
|
||||
MJIT_FUNC_EXPORTED VALUE
|
||||
rb_str_concat_literals(size_t num, const VALUE *strary)
|
||||
{
|
||||
VALUE str;
|
||||
size_t i, s;
|
||||
long len = 1;
|
||||
size_t i, s = 0;
|
||||
unsigned long len = 1;
|
||||
|
||||
if (UNLIKELY(!num)) return rb_str_new(0, 0);
|
||||
if (UNLIKELY(num == 1)) return rb_str_resurrect(strary[0]);
|
||||
|
||||
for (i = 0; i < num; ++i) { len += RSTRING_LEN(strary[i]); }
|
||||
if (LIKELY(len < MIN_PRE_ALLOC_SIZE)) {
|
||||
str = rb_str_resurrect(strary[0]);
|
||||
s = 1;
|
||||
}
|
||||
else {
|
||||
str = rb_str_buf_new(len);
|
||||
rb_enc_copy(str, strary[0]);
|
||||
s = 0;
|
||||
}
|
||||
str = rb_str_buf_new(len);
|
||||
str_enc_copy(str, strary[0]);
|
||||
|
||||
for (i = s; i < num; ++i) {
|
||||
const VALUE v = strary[i];
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue