arg-cache: Store marshallers in predefined groups
The four marshaller function pointers cannot be just any functions. There are a relatively small number of configurations of marshallers, so it saves space to write them all out explicitly, and store only one pointer in the argument cache instead of four. It also prevents accidentally leaving a control flow path where one of the marshaller function pointers remains unset.
Showing with 325 additions and 113 deletions