public override Expression ReadAddr(Addressable addr) { if (addr is InstanceField instanceField) { var fieldName = FieldTranslator.GetFieldName(instanceField.Field); var instanceName = instanceField.Instance.Name; if (Settings.SplitFieldsEnabled()) { return(ReadFieldExpression.From(instanceField)); } else { return(ReadHeapExpression.From(instanceField)); } } else if (addr is StaticField staticField) { return(ReadFieldExpression.From(staticField)); } else if (addr is DotNetVariable v) { return(BoogieVariable.FromDotNetVariable(v.Var)); } else { throw new NotImplementedException(); } }
public override Expression ReadInstanceField(InstanceFieldAccess instanceFieldAccess) { if (!Settings.SplitFieldsEnabled()) { return(ReadFieldExpression.From(new InstanceField(instanceFieldAccess))); } else { return(dispatcher.ReadAddr(dispatcher.AddressOf(instanceFieldAccess))); } }