protected override Expression DoResolve (ResolveContext rc)
{
pinned_string = new LocalVariable (vi.Block, "$pinned",
LocalVariable.Flags.FixedVariable | LocalVariable.Flags.CompilerGenerated | LocalVariable.Flags.Used,
vi.Location);
pinned_string.Type = TypeManager.string_type;
if (TypeManager.int_get_offset_to_string_data == null) {
var helper = rc.Module.PredefinedTypes.RuntimeHelpers.Resolve (loc);
if (helper != null) {
TypeManager.int_get_offset_to_string_data = TypeManager.GetPredefinedProperty (helper,
"OffsetToStringData", pinned_string.Location, TypeManager.int32_type);
}
}
eclass = ExprClass.Variable;
type = TypeManager.int32_type;
return this;
}