Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 15 additions & 15 deletions Mono.Debugging.Soft/FieldValueReference.cs
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ namespace Mono.Debugging.Soft
{
public class FieldValueReference: SoftValueReference
{
FieldInfoMirror field;
FieldInfoMirror fieldInfo;
object obj;
TypeMirror declaringType;
ObjectValueFlags flags;
Expand All @@ -51,7 +51,7 @@ public FieldValueReference (EvaluationContext ctx, FieldInfoMirror field, object

public FieldValueReference (EvaluationContext ctx, FieldInfoMirror field, object obj, TypeMirror declaringType, string vname, ObjectValueFlags vflags, FieldReferenceBatch batch = null): base (ctx)
{
this.field = field;
this.fieldInfo = field;
this.obj = obj;
this.declaringType = declaringType;
this.vname = vname;
Expand Down Expand Up @@ -105,19 +105,19 @@ public override ObjectValueFlags Flags {

public override string Name {
get {
return vname ?? field.Name;
return vname ?? fieldInfo.Name;
}
}

public override object Type {
get {
return field.FieldType;
return fieldInfo.FieldType;
}
}

public override object DeclaringType {
get {
return field.DeclaringType;
return fieldInfo.DeclaringType;
}
}

Expand All @@ -127,49 +127,49 @@ public override object Value {
// If the type hasn't already been loaded, invoke the .cctor() for types w/ the BeforeFieldInit attribute.
Context.Adapter.ForceLoadType (Context, declaringType);

return declaringType.GetValue (field, ((SoftEvaluationContext)Context).Thread);
return declaringType.GetValue (fieldInfo, ((SoftEvaluationContext)Context).Thread);
} else if (obj is ObjectMirror) {
if (batch != null)
return batch.GetValue (field);
return ((ObjectMirror)obj).GetValue (field);
return batch.GetValue (fieldInfo);
return ((ObjectMirror)obj).GetValue (fieldInfo);
} else if (obj is StructMirror) {
StructMirror sm = (StructMirror)obj;
int idx = 0;
foreach (FieldInfoMirror f in sm.Type.GetFields ()) {
if (f.IsStatic) continue;
if (f == field)
if (f == fieldInfo)
break;
idx++;
}
return sm.Fields [idx];
} else if (obj is StringMirror) {
SoftEvaluationContext cx = (SoftEvaluationContext) Context;
StringMirror val = (StringMirror) obj;
FieldInfo rfield = typeof(string).GetField (field.Name, BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);
FieldInfo rfield = typeof(string).GetField (fieldInfo.Name, BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);
return cx.Session.VirtualMachine.CreateValue (rfield.GetValue (val.Value));
} else {
SoftEvaluationContext cx = (SoftEvaluationContext) Context;
PrimitiveValue val = (PrimitiveValue) obj;
if (val.Value == null)
return null;
FieldInfo rfield = val.Value.GetType ().GetField (field.Name, BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);
FieldInfo rfield = val.Value.GetType ().GetField (fieldInfo.Name, BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);
return cx.Session.VirtualMachine.CreateValue (rfield.GetValue (val.Value));
}
}
set {
if (obj == null)
declaringType.SetValue (field, (Value)value);
declaringType.SetValue (fieldInfo, (Value)value);
else if (obj is ObjectMirror) {
if (batch != null)
batch.Invalidate ();
((ObjectMirror)obj).SetValue (field, (Value)value);
((ObjectMirror)obj).SetValue (fieldInfo, (Value)value);
}
else if (obj is StructMirror) {
StructMirror sm = (StructMirror)obj;
int idx = 0;
foreach (FieldInfoMirror f in sm.Type.GetFields ()) {
if (f.IsStatic) continue;
if (f == field)
if (f == fieldInfo)
break;
idx++;
}
Expand All @@ -187,7 +187,7 @@ public override object Value {

internal string [] GetTupleElementNames ()
{
return GetTupleElementNames (field.GetCustomAttributes (true));
return GetTupleElementNames (fieldInfo.GetCustomAttributes (true));
}

internal static string [] GetTupleElementNames (CustomAttributeDataMirror [] attrs)
Expand Down