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:
Matt Valentine-House 2023-01-10 17:58:45 +00:00 committed by Peter Zhu
parent fc7f852033
commit bb5fddd070
Notes: git 2023-01-13 15:32:06 +00:00
2 changed files with 25 additions and 13 deletions

View file

@ -661,6 +661,27 @@ CODE
assert_equal(Encoding::UTF_8, "#{s}x".encoding)
end
def test_string_interpolations_across_size_pools_get_embedded
omit if GC::INTERNAL_CONSTANTS[:SIZE_POOL_COUNT] == 1
require 'objspace'
base_slot_size = GC::INTERNAL_CONSTANTS[:BASE_SLOT_SIZE]
small_obj_size = (base_slot_size / 2)
large_obj_size = base_slot_size * 2
a = "a" * small_obj_size
b = "a" * large_obj_size
res = "#{a}, #{b}"
dump_res = ObjectSpace.dump(res)
dump_orig = ObjectSpace.dump(a)
new_slot_size = Integer(dump_res.match(/"slot_size":(\d+)/)[1])
orig_slot_size = Integer(dump_orig.match(/"slot_size":(\d+)/)[1])
assert_match(/"embedded":true/, dump_res)
assert_operator(new_slot_size, :>, orig_slot_size)
end
def test_count
a = S("hello world")
assert_equal(5, a.count(S("lo")))