Factor out C -> interp call; fix callsite mark bug

This will hopefully deal with a fail-to-mark issue found by nwc10++,
and factors out some repeated logic.