RuntimeCallSites come into play for Runtime nodes where at least on of the arguments is a primitive and one is an Object, previously used to leverage what little static type information that we had.
We can probably remove all this logic now, in the optimistic world, but we should benchmark without it to make sure that it has no impact. We don't believe it does.
This would hopefully be a drastic simplification of code complexity for very little performance gain. The performance gain would be completely gained by the optimistic architecture anyway,