Mark strings returned by Symbol#to_s as chilled (#12065)
commit6deeec5d459ecff5ec4628523b14ac7379fd942e
authorJean byroot Boussier <[email protected]>
Wed, 13 Nov 2024 14:20:00 +0000 (13 15:20 +0100)
committerGitHub <[email protected]>
Wed, 13 Nov 2024 14:20:00 +0000 (13 09:20 -0500)
tree1815b684da615359165055c3a12df4dca45a1ae7
parent37a16c7812f5b7e6faa762b927e9f04065cc495a
Mark strings returned by Symbol#to_s as chilled  (#12065)

* 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é <[email protected]>
---------

Co-authored-by: Étienne Barrié <[email protected]>
Co-authored-by: Jean Boussier <[email protected]>
15 files changed:
array.c
compile.c
error.c
include/ruby/internal/abi.h
include/ruby/internal/core/rarray.h
include/ruby/internal/fl_type.h
include/ruby/internal/intern/error.h
internal/string.h
lib/ruby_vm/rjit/c_type.rb
object.c
prism_compile.c
spec/ruby/core/string/chilled_string_spec.rb
string.c
variable.c
yjit/src/cruby_bindings.inc.rs