summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMax Bernstein <ruby@bernsteinbear.com>2025-09-19 08:57:33 -0400
committerMax Bernstein <tekknolagi@gmail.com>2025-09-19 12:00:39 -0400
commitf0702c5aa32aa7092a4bb6c0c3e5863c4411e22d (patch)
tree72c59f6d9f65eb3940057d05b4db6ee7836cbd83
parente40cd392e44c38ce93c573b9244f46bba868c09c (diff)
ZJIT: Also count fallback sends to ISEQs we can't direct send to
Make sure these parameter types are counted in the fallback def_types.
-rw-r--r--zjit/src/hir.rs3
1 files changed, 3 insertions, 0 deletions
diff --git a/zjit/src/hir.rs b/zjit/src/hir.rs
index 48cbd423b3..1fdef0e404 100644
--- a/zjit/src/hir.rs
+++ b/zjit/src/hir.rs
@@ -1864,6 +1864,9 @@ impl Function {
// TODO(max): Handle other kinds of parameter passing
let iseq = unsafe { get_def_iseq_ptr((*cme).def) };
if !can_direct_send(iseq) {
+ if let Insn::SendWithoutBlock { def_type: insn_def_type, .. } = &mut self.insns[insn_id.0] {
+ *insn_def_type = Some(MethodType::from(def_type));
+ }
self.push_insn_id(block, insn_id); continue;
}
self.push_insn(block, Insn::PatchPoint { invariant: Invariant::MethodRedefined { klass, method: mid, cme }, state });