private EmitName ( |
||
cg | ||
name | ||
return | void |
void EmitName(CodeGenerator cg, BoundExpression name)
{
Contract.ThrowIfNull(cg);
Contract.ThrowIfNull(name);
if (_name_loc != null)
{
cg.Builder.EmitLocalLoad(_name_loc);
}
else
{
_cg = cg;
// return (<loc> = <name>)
_name_loc = cg.GetTemporaryLocal(cg.CoreTypes.String);
cg.EmitConvert(name, cg.CoreTypes.String);
cg.Builder.EmitOpCode(ILOpCode.Dup);
cg.Builder.EmitLocalStore(_name_loc);
}
}
}
InstanceCacheHolder::EmitName ( |
/// <summary> /// Emits name as string. Caches the result if holder is provided, or loads evaluated name if holder was initialized already. /// </summary> public static void EmitName(InstanceCacheHolder holderOrNull, CodeGenerator cg, BoundExpression name) { Contract.ThrowIfNull(cg); Contract.ThrowIfNull(name); if (holderOrNull != null) { holderOrNull.EmitName(cg, name); } else { cg.EmitConvert(name, cg.CoreTypes.String); } }