void EmitLoadField(Expression self, IField fieldInfo)
{
if (fieldInfo.IsStatic)
{
if (fieldInfo.IsLiteral)
{
EmitLoadLiteralField(self, fieldInfo);
}
else
{
if (fieldInfo.IsVolatile)
_il.Emit(OpCodes.Volatile);
_il.Emit(IsByAddress(fieldInfo.Type) ? OpCodes.Ldsflda : OpCodes.Ldsfld,
GetFieldInfo(fieldInfo));
}
}
else
{
LoadMemberTarget(self, fieldInfo);
if (fieldInfo.IsVolatile)
_il.Emit(OpCodes.Volatile);
_il.Emit(IsByAddress(fieldInfo.Type) ? OpCodes.Ldflda : OpCodes.Ldfld,
GetFieldInfo(fieldInfo));
}
PushType(fieldInfo.Type);
}