Compiler\MethodBodySynthesizer.Lowered.cs (8)
95F.Binary(BinaryOperatorKind.Multiplication, hashCode.Type,
96F.Binary(BinaryOperatorKind.Xor, hashCode.Type,
97F.Convert(hashCode.Type,
107F.Binary(BinaryOperatorKind.Addition, i.Type,
182F.Binary(BinaryOperatorKind.Multiplication, hashCode.Type,
183F.Binary(BinaryOperatorKind.Xor, hashCode.Type,
184F.Convert(hashCode.Type,
196F.Binary(BinaryOperatorKind.Addition, i.Type,
Lowering\AsyncRewriter\AsyncExceptionHandlerRewriter.cs (11)
262statements.Add(_F.Assignment(_F.Local(pendingExceptionLocal), _F.Default(pendingExceptionLocal.Type)));
264statements.Add(_F.Assignment(_F.Local(pendingBranchVar), _F.Default(pendingBranchVar.Type)));
470_F.Null(obj.Type)),
491_F.As(_F.Local(obj), ex.Type));
497_F.If(_F.ObjectEqual(_F.Local(ex), _F.Null(ex.Type)), rethrow),
559_F.Default(currentAwaitCatchFrame.pendingCatch.Type)),
617TypeSymbol pendingCaughtExceptionType = currentAwaitCatchFrame.pendingCaughtException.Type;
763return node.Update(hoistedLocal, node.ConstantValueOpt, hoistedLocal.Type);
1142if (!_hoistedLocals.Keys.Any(l => l.Name == local.Name && TypeSymbol.Equals(l.Type, local.Type, TypeCompareKind.ConsiderEverything2)))
1155var newLocal = F.SynthesizedLocal(local.Type, pendingCatch.SyntaxOpt, kind: SynthesizedLocalKind.ExceptionFilterAwaitHoistedExceptionLocal);
Lowering\AsyncRewriter\AsyncMethodToStateMachineRewriter.cs (18)
242exceptionLocal.Type,
451if (awaiterTemp.Type.IsDynamic())
472TypeSymbol awaiterFieldType = awaiterTemp.Type.IsVerifierReference()
474: awaiterTemp.Type;
492if (!TypeSymbol.Equals(awaiterFieldType, awaiterTemp.Type, TypeCompareKind.ConsiderEverything2))
506blockBuilder.Add(awaiterTemp.Type.IsDynamic()
508: GenerateAwaitOnCompleted(awaiterTemp.Type, awaiterTemp));
534if (!TypeSymbol.Equals(awaiterTemp.Type, awaiterField.Type, TypeCompareKind.ConsiderEverything2))
536Debug.Assert(awaiterFieldRef.Type.IsObjectType() || TypeSymbol.Equals(awaiterTemp.Type, awaiterFieldRef.Type, TypeCompareKind.AllIgnoreOptions));
537Conversion c = F.ClassifyEmitConversion(awaiterFieldRef, awaiterTemp.Type);
539awaiterFieldRef = F.Convert(awaiterTemp.Type, awaiterFieldRef, c);
590F.As(F.Local(awaiterTemp), criticalNotifyCompletedTemp.Type)));
599condition: F.ObjectEqual(F.Local(criticalNotifyCompletedTemp), F.Null(criticalNotifyCompletedTemp.Type)),
606F.Convert(notifyCompletionTemp.Type, F.Local(awaiterTemp), Conversion.ExplicitReference)),
611notifyCompletionTemp.Type,
616F.NullOrDefault(notifyCompletionTemp.Type))),
623criticalNotifyCompletedTemp.Type,
630F.NullOrDefault(criticalNotifyCompletedTemp.Type)));
Lowering\ClosureConversion\ClosureConversion.cs (4)
637return new BoundLocal(syntax, localFrame, null, localFrame.Type);
722if (!framePointer.Type.IsValueType)
781value = new BoundLocal(syntax, localToUse, null, localToUse.Type);
790static (frameType1, arg) => new BoundLocal(arg.syntax, arg.framePointer, null, arg.framePointer.Type),