use invoke when doing a setjmp-guarding call via a function pointer
make sure to coerce arguments to invoke due to setjmp