You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
cranelift/pulley: pass first 4 indirect-call args via call_indirectN
Extend `Inst::IndirectCall`'s `info.dest` from `XReg` to
`PulleyCallIndirect { target, args: SmallVec<[XReg; 4]> }`, parallel
to `PulleyCall`. `gen_call_ind_info` pulls the first 0–4 integer
args from `uses` (where they were going through regalloc's
`reg_fixed_use`, synthesising an `xmov` each) into `args`, where
they flow as free reg uses and the emitted `call_indirect{1,2,3,4}`
opcode moves them at call time.
The emit side picks the narrowest op after the same "drop args
already in their ABI register" loop used by direct calls. Phase-3's
`xband_funcref_dispatch_*` writing `dst_vmctx` into a free register
+ `call_indirect1 dst_code, dst_vmctx` is the headline shrink (one
fewer Pulley dispatch per call_indirect on the eager-table fast
path).
Filetest snapshots updated for the new `dest` shape.
0 commit comments