The (undocumented) idea was that jv.c and similar low-level stuff assert that you're doing the right thing (passing the right types, etc), while the higher-level stuff in jv_aux.c does more checks and constructs semi-decent error messages if you get things wrong.