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)
213statements.Add(_F.Assignment(_F.Local(pendingExceptionLocal), _F.Default(pendingExceptionLocal.Type)));
215statements.Add(_F.Assignment(_F.Local(pendingBranchVar), _F.Default(pendingBranchVar.Type)));
406_F.Null(obj.Type)),
425_F.As(_F.Local(obj), ex.Type));
431_F.If(_F.ObjectEqual(_F.Local(ex), _F.Null(ex.Type)), rethrow),
487_F.Default(currentAwaitCatchFrame.pendingCatch.Type)),
528_F.Convert(currentAwaitCatchFrame.pendingCaughtException.Type,
659return node.Update(hoistedLocal, node.ConstantValueOpt, hoistedLocal.Type);
1019if (!_hoistedLocals.Keys.Any(l => l.Name == local.Name && TypeSymbol.Equals(l.Type, local.Type, TypeCompareKind.ConsiderEverything2)))
1032var newLocal = F.SynthesizedLocal(local.Type, pendingCatch.SyntaxOpt, kind: SynthesizedLocalKind.ExceptionFilterAwaitHoistedExceptionLocal);
Lowering\AsyncRewriter\AsyncMethodToStateMachineRewriter.cs (16)
256exceptionLocal.Type,
437if (awaiterTemp.Type.IsDynamic())
457TypeSymbol awaiterFieldType = awaiterTemp.Type.IsVerifierReference()
459: awaiterTemp.Type;
477(TypeSymbol.Equals(awaiterField.Type, awaiterTemp.Type, TypeCompareKind.ConsiderEverything2))
481blockBuilder.Add(awaiterTemp.Type.IsDynamic()
483: GenerateAwaitOnCompleted(awaiterTemp.Type, awaiterTemp));
500TypeSymbol.Equals(awaiterTemp.Type, awaiterField.Type, TypeCompareKind.ConsiderEverything2)
502: F.Convert(awaiterTemp.Type, F.Field(F.This(), awaiterField))));
547F.As(F.Local(awaiterTemp), criticalNotifyCompletedTemp.Type)));
556condition: F.ObjectEqual(F.Local(criticalNotifyCompletedTemp), F.Null(criticalNotifyCompletedTemp.Type)),
563F.Convert(notifyCompletionTemp.Type, F.Local(awaiterTemp), Conversion.ExplicitReference)),
568notifyCompletionTemp.Type,
573F.NullOrDefault(notifyCompletionTemp.Type))),
580criticalNotifyCompletedTemp.Type,
587F.NullOrDefault(criticalNotifyCompletedTemp.Type)));
Lowering\ClosureConversion\ClosureConversion.cs (4)
621return new BoundLocal(syntax, localFrame, null, localFrame.Type);
706if (!framePointer.Type.IsValueType)
765value = new BoundLocal(syntax, localToUse, null, localToUse.Type);
772var left = proxy.Replacement(syntax, frameType1 => new BoundLocal(syntax, framePointer, null, framePointer.Type));