private void StFld()
{
var inst = _instructions[_instructionPtr];
var fld = ((FieldDefinition) inst.Operand).Resolve();
var value = _opStack.Pop();
var target = _opStack.Pop(); // addrCit
var fieldDesc = target.MethodTable.EEClass.LookupFieldDesc(fld);
if (target.Type == CorInfoType.Class)
{
if (value.Type == CorInfoType.Class)
{
// TODO:
target.FieldInstances[fieldDesc.Offset] = value;
}
else if (value.Type == CorInfoType.ValueClass)
{
target.FieldInstances[fieldDesc.Offset] = value.GetInstanceOrCopiedValue();
throw ThrowHelper.NotImplementedYet;
}
else
{
target.FieldInstances[fieldDesc.Offset] = value.GetInstanceOrCopiedValue(); // copy
}
}
else
{
throw ThrowHelper.NotImplementedYet;
}
}