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:

  f45eb3dcb9/vm_insnhelper.c (L4726-L4729)

[Bug #20799]
This commit is contained in:
Aaron Patterson 2024-10-15 16:57:09 -07:00 committed by Aaron Patterson
parent ed993b5bcc
commit a0ecdbfbfe
Notes: git 2024-10-16 02:06:25 +00:00
2 changed files with 22 additions and 1 deletions

View file

@ -1177,7 +1177,7 @@ vm_caller_setup_fwd_args(const rb_execution_context_t *ec, rb_control_frame_t *r
*adjusted_ci = VM_CI_ON_STACK(
site_mid,
(caller_flag | (site_flag & (VM_CALL_FCALL | VM_CALL_FORWARDING))),
((caller_flag & ~VM_CALL_ARGS_SIMPLE) | (site_flag & (VM_CALL_FCALL | VM_CALL_FORWARDING))),
site_argc + caller_argc,
kw
);