Actions
Bug #20799
closedBug in forwarding to struct methods
ruby -v:
ruby 3.4.0dev (2024-10-15T18:34:24Z master f45eb3dcb9) +PRISM [arm64-darwin24]
Description
This program crashes:
Thing = Struct.new(:value)
Obj = Thing.new("ok")
def delegate(...)
Obj.value(...)
end
def no_args
delegate
end
def splat_args(*args)
delegate(*args)
end
no_args
splat_args
It's crashing because we're forwarding to a struct method without taking in to account the forwarding IC. I have a patch prepared, but I am filing this ticket to track it.
Updated by tenderlovemaking (Aaron Patterson) 2 months ago
- Status changed from Open to Closed
Applied in changeset git|a0ecdbfbfe57a57ab33bdb5e1de4d5dfa8407dbb.
Remove "simple" flag from forwarded ICs
I don't think we should ever consider forwarded IC's to be "simple".
Previously, the "simple" flag would be copied to the derived IC and this
happened to cause struct set / get iseqs to write an invalid CC
fastpath:
[Bug #20799]
Updated by byroot (Jean Boussier) 2 months ago
- Backport changed from 3.1: UNKNOWN, 3.2: UNKNOWN, 3.3: UNKNOWN to 3.1: DONTNEED, 3.2: DONTNEED, 3.3: DONTNEED
Updated by byroot (Jean Boussier) about 2 months ago
- Related to Bug #20865: `Stack consistency error` running ActiveSupport test added
Actions
Like0
Like0Like0Like0