public LocalBuilder GetTemporaryLocal (TypeSpec t)
{
if (temporary_storage != null) {
object o;
if (temporary_storage.TryGetValue (t, out o)) {
if (o is Stack<LocalBuilder>) {
var s = (Stack<LocalBuilder>) o;
o = s.Count == 0 ? null : s.Pop ();
} else {
temporary_storage.Remove (t);
}
}
if (o != null)
return (LocalBuilder) o;
}
return DeclareLocal (t, false);
}