From 6deeec5d459ecff5ec4628523b14ac7379fd942e Mon Sep 17 00:00:00 2001 From: Jean byroot Boussier Date: Wed, 13 Nov 2024 15:20:00 +0100 Subject: Mark strings returned by Symbol#to_s as chilled (#12065) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Use FL_USER0 for ELTS_SHARED This makes space in RString for two bits for chilled strings. * Mark strings returned by `Symbol#to_s` as chilled [Feature #20350] `STR_CHILLED` now spans on two user flags. If one bit is set it marks a chilled string literal, if it's the other it marks a `Symbol#to_s` chilled string. Since it's not possible, and doesn't make much sense to include debug info when `--debug-frozen-string-literal` is set, we can't include allocation source, but we can safely include the symbol name in the warning message, making it much easier to find the source of the issue. Co-Authored-By: Étienne Barrié --------- Co-authored-by: Étienne Barrié Co-authored-by: Jean Boussier --- lib/ruby_vm/rjit/c_type.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'lib') diff --git a/lib/ruby_vm/rjit/c_type.rb b/lib/ruby_vm/rjit/c_type.rb index 3b313a658b..98011f9f61 100644 --- a/lib/ruby_vm/rjit/c_type.rb +++ b/lib/ruby_vm/rjit/c_type.rb @@ -31,8 +31,8 @@ module RubyVM::RJIT def self.new(fiddle_type) name = Fiddle.constants.find do |const| const.start_with?('TYPE_') && Fiddle.const_get(const) == fiddle_type.abs - end&.to_s - name.delete_prefix!('TYPE_') + end&.name + name = name.delete_prefix('TYPE_') if fiddle_type.negative? name.prepend('U') end -- cgit v1.2.3