public override void Emit (EmitContext ec)
{
if (Value == null) {
ec.EmitNull ();
return;
}
//
// Use string.Empty for both literals and constants even if
// it's not allowed at language level
//
if (Value.Length == 0 && ec.Module.Compiler.Settings.Optimize) {
var string_type = ec.BuiltinTypes.String;
if (ec.CurrentType != string_type) {
var m = ec.Module.PredefinedMembers.StringEmpty.Get ();
if (m != null) {
ec.Emit (OpCodes.Ldsfld, m);
return;
}
}
}
ec.Emit (OpCodes.Ldstr, Value);
}