pub unsafe fn call_modifier_generic(
func: *const c_void,
recv: *const c_void,
ints: &[u64],
floats: [f64; 4],
result_size: usize,
) -> Vec<u8> โExpand description
Call a View modifier whose integer arguments are given in full.
call_modifier appends Self.Type and the Self: View witness table
itself, which is right for the great majority of modifiers and wrong for
every generic one: id<H: Hashable> and contentShape<S: Shape> take two
metadata arguments and two witness tables, and they interleave with the
value arguments in a way no fixed tail can express. Here the caller supplies
the whole integer sequence, type arguments and witness tables included.
All eight argument registers are always loaded. A callee reads only the ones its signature names, so padding the sequence with zeroes is free and saves dispatching on the argument count.
ยงSafety
func must be the modifier, and ints/floats must match its signature โ
including the trailing metadata and witness tables, which are not implied.