The crucial point is that if a function takes 2 arguments, the first argument must be rooted while the second argument is computed. Therefore it would only help for `jl_call2` to root its arguments if the prior roots were released for some reason. I suppose that could happen, but what I'm really worried about is people writing `jl_call2(f, jl_call1(g,a), jl_call1(g,b))`. This API makes that call seem possible.