// will get spilled into the binding. This is clearly conservative, but simplifies
// the analysis.
IRClosure cl = ((WrappedIRClosure) o).getClosure();
// If the call is a dataflow barrier, we have to spill everything here
boolean spillAllVars = scopeBindingHasEscaped || call.targetRequiresCallersBinding();
// - If all variables have to be spilled, then those variables will no longer be dirty after the call site
// - If a variable is used in the closure (FIXME: Strictly only those vars that are live at the call site --
// but we dont have this info!), it has to be spilt. So, these variables are no longer dirty after the call site.
// - If a variable is (re)defined in the closure, it will always be loaded after the call. So, we have to always