1 write to _factory
Microsoft.CodeAnalysis.CSharp (1)
Lowering\LocalRewriter\LocalRewriter.PatternLocalRewriter.cs (1)
33_factory = localRewriter._factory;
188 references to _factory
Microsoft.CodeAnalysis.CSharp (188)
Lowering\LocalRewriter\LocalRewriter.DecisionDagRewriter.cs (60)
115_dagNodeLabels.Add(dag, label = dag is BoundLeafDecisionDagNode d ? d.Label : _factory.GenerateLabel("dagNode")); 355decisionDag = ShareTempsAndEvaluateInput(loweredSwitchGoverningExpression, decisionDag, expr => result.Add(_factory.ExpressionStatement(expr)), out savedInputExpression); 362result.Add(_factory.Assignment(inputTemp, loweredSwitchGoverningExpression)); 381_loweredDecisionDag.Add(_factory.Goto(GetDagNodeLabel(firstNode))); 402_loweredDecisionDag.Add(_factory.Label(label)); 463_loweredDecisionDag.Add(_factory.ExpressionStatement(sideEffect)); 474_factory.Syntax = test.Syntax; 479_loweredDecisionDag.Add(_factory.ConditionalGoto(test, GetDagNodeLabel(whenTrue), jumpIfTrue: true)); 484_loweredDecisionDag.Add(_factory.ConditionalGoto(test, GetDagNodeLabel(whenFalse), jumpIfTrue: false)); 489_loweredDecisionDag.Add(_factory.ConditionalGoto(test, GetDagNodeLabel(whenTrue), jumpIfTrue: true)); 490_loweredDecisionDag.Add(_factory.Goto(GetDagNodeLabel(whenFalse))); 663_loweredDecisionDag.Add(_factory.Goto(leaf.Label)); 682_loweredDecisionDag.Add(_factory.ConditionalGoto(test, trueLabel, jumpIfTrue: true)); 688_loweredDecisionDag.Add(_factory.ConditionalGoto(test, falseLabel, jumpIfTrue: false)); 693LabelSymbol falseLabel = _factory.GenerateLabel("relationalDispatch"); 694_loweredDecisionDag.Add(_factory.ConditionalGoto(test, falseLabel, jumpIfTrue: false)); 696_loweredDecisionDag.Add(_factory.Label(falseLabel)); 761this._factory.Compilation.Options.OptimizationLevel == OptimizationLevel.Release && 792NamedTypeSymbol int64Type = _factory.SpecialType(SpecialType.System_Int64); 793Conversion c = _factory.ClassifyEmitConversion(input, int64Type); 796input = _factory.Convert(int64Type, input, c); 802NamedTypeSymbol uint64Type = _factory.SpecialType(SpecialType.System_UInt64); 803Conversion c = _factory.ClassifyEmitConversion(input, uint64Type); 806input = _factory.Convert(uint64Type, input, c); 838_loweredDecisionDag.Add(_factory.ConditionalGoto(MakeValueTest(node.Syntax, input, cases[i].value), cases[i].label, jumpIfTrue: true)); 841_loweredDecisionDag.Add(_factory.Goto(defaultLabel)); 846var gt = _factory.GenerateLabel("greaterThanMidpoint"); 847_loweredDecisionDag.Add(_factory.ConditionalGoto(MakeRelationalTest(node.Syntax, input, lessThanOrEqualOperator, cases[firstIndex + half - 1].value), gt, jumpIfTrue: false)); 849_loweredDecisionDag.Add(_factory.Label(gt)); 956TypeSymbol returnType = _factory.SpecialType(SpecialType.System_UInt32); 959StringPatternInput.String => _factory.SpecialType(SpecialType.System_String), 960StringPatternInput.SpanChar => _factory.WellKnownType(WellKnownType.System_Span_T) 961.Construct(_factory.SpecialType(SpecialType.System_Char)), 962StringPatternInput.ReadOnlySpanChar => _factory.WellKnownType(WellKnownType.System_ReadOnlySpan_T) 963.Construct(_factory.SpecialType(SpecialType.System_Char)), 1027labelToWhenExpression = _factory.GenerateLabel("sharedWhenExpression"); 1072sectionBuilder.Add(_factory.Label(labelToSectionScope)); 1074_whenNodeIdentifierLocal ??= _factory.SynthesizedLocal(_factory.SpecialType(SpecialType.System_Int32)); 1079sectionBuilder.Add(_factory.Assignment(_factory.Local(_whenNodeIdentifierLocal), _factory.Literal(whenNodeInfo.WhenNodeIdentifier))); 1082sectionBuilder.Add(_factory.Goto(whenNodeInfo.LabelToWhenExpression)); 1103sectionBuilder.Add(_factory.Label(labelToWhenExpression)); 1112whenFalseSwitchSections.Add(_factory.SwitchSection(whenNodeIdentifier, _factory.Goto(GetDagNodeLabel(whenNode.WhenFalse)))); 1121BoundStatement jumps = _factory.Switch(_factory.Local(_whenNodeIdentifierLocal), whenFalseSwitchSections.ToImmutableAndFree()); 1124sectionBuilder.Add(GenerateInstrumentation ? _factory.HiddenSequencePoint(jumps) : jumps); 1133_factory.Syntax = whenClauseSyntax; 1134BoundStatement conditionalGoto = _factory.ConditionalGoto(_localRewriter.VisitExpression(whenExpression), whenTrueLabel, jumpIfTrue: true); 1164sectionBuilder.Add(_factory.Label(labelToSectionScope)); 1175BoundStatement jump = _factory.Goto(GetDagNodeLabel(whenFalse)); 1176sectionBuilder.Add(GenerateInstrumentation ? _factory.HiddenSequencePoint(jump) : jump); 1181sectionBuilder.Add(_factory.Goto(trueLabel)); 1196sectionBuilder.Add(_factory.Assignment(left, right)); 1208_factory.Syntax = node.Syntax; 1215_loweredDecisionDag.Add(_factory.ExpressionStatement(sideEffect)); 1221_loweredDecisionDag.Add(_factory.HiddenSequencePoint()); 1226_loweredDecisionDag.Add(_factory.Goto(GetDagNodeLabel(evaluationNode.Next)));
Lowering\LocalRewriter\LocalRewriter.PatternLocalRewriter.cs (64)
35_tempAllocator = new DagTempAllocator(_factory, node, generateInstrumentation); 147return _factory.AssignmentExpression(output, access); 157return _factory.AssignmentExpression(output, _localRewriter.MakePropertyAccess(_factory.Syntax, input, property, LookupResultKind.Viable, property.Type, isLeftOfAssignment: false)); 177receiver = _factory.Type(method.ContainingType); 197return _factory.Call(receiver, method, refKindBuilder.ToImmutableAndFree(), argBuilder.ToImmutableAndFree()); 207inputType = _factory.SpecialType(SpecialType.System_Object); 208Debug.Assert(_factory.ClassifyEmitConversion(input, inputType).IsIdentity); 209input = _factory.Convert(inputType, input, Conversion.Identity); 216Conversion conversion = _factory.Compilation.Conversions.ClassifyBuiltInConversion(inputType, output.Type, isChecked: false, ref useSiteInfo); 228evaluated = _factory.Call(input, getValueOrDefault); 238evaluated = _factory.As(input, type); 241return _factory.AssignmentExpression(output, evaluated); 253return _factory.AssignmentExpression(output, _factory.Indexer(input, e.Property, _factory.Literal(e.Index))); 278return _factory.AssignmentExpression(output, access); 304return _factory.AssignmentExpression(output, access); 315var ctor = (MethodSymbol)_factory.WellKnownMember(WellKnownMember.System_Index__ctor); 319return new BoundFromEndIndexExpression(_factory.Syntax, _factory.Literal(-index), 320methodOpt: ctor, _factory.WellKnownType(WellKnownType.System_Index)); 323return _factory.New(ctor, _factory.Literal(index), _factory.Literal(false)); 329var indexCtor = (MethodSymbol)_factory.WellKnownMember(WellKnownMember.System_Index__ctor); 330var end = new BoundFromEndIndexExpression(_factory.Syntax, _factory.Literal(-e.EndIndex), 331methodOpt: indexCtor, _factory.WellKnownType(WellKnownType.System_Index)); 333var rangeCtor = (MethodSymbol)_factory.WellKnownMember(WellKnownMember.System_Range__ctor); 335methodOpt: rangeCtor, _factory.WellKnownType(WellKnownType.System_Range)); 344_factory.Syntax = test.Syntax; 354return _factory.Is(input, d.Type); 379TypeSymbol objectType = _factory.SpecialType(SpecialType.System_Object); 380var operandType = new PointerTypeSymbol(TypeWithAnnotations.Create(_factory.SpecialType(SpecialType.System_Void))); 384_factory.Convert(operandType, rewrittenExpr, Conversion.PointerToVoid), 385_factory.Convert(operandType, new BoundLiteral(syntax, ConstantValue.Null, objectType), Conversion.NullToPointer), 386_factory.SpecialType(SpecialType.System_Boolean), 413return _factory.MakeIsNotANumberTest(input); 429comparisonType = _factory.SpecialType(SpecialType.System_Int32); 431Conversion c = _factory.ClassifyEmitConversion(input, comparisonType); 433input = _factory.Convert(comparisonType, input, c); 435c = _factory.ClassifyEmitConversion(literal, comparisonType); 437literal = _factory.Convert(comparisonType, literal, c); 440return this._localRewriter.MakeBinaryOperator(_factory.Syntax, operatorKind, input, literal, _factory.SpecialType(SpecialType.System_Boolean), method: null, constrainedToTypeOpt: null); 448((MethodSymbol)_factory.WellKnownMember(isReadOnlySpan 451.Construct(_factory.SpecialType(SpecialType.System_Char)); 452var asSpan = (MethodSymbol)_factory.WellKnownMember(WellKnownMember.System_MemoryExtensions__AsSpan_String); 456return _factory.Call(null, sequenceEqual, input, _factory.Call(null, asSpan, _factory.StringLiteral(value))); 488sideEffect = _factory.AssignmentExpression(output, _factory.As(input, typeEvaluation1.Type)); 489testExpression = _factory.ObjectNotEqual(output, _factory.Null(output.Type)); 496_factory.Compilation.Conversions.ClassifyBuiltInConversion(test.Input.Type, typeEvaluation2.Type, isChecked: false, ref useSiteInfo) is Conversion conv && 503sideEffect = _factory.AssignmentExpression(output, _factory.Convert(baseType, input, conv)); 504testExpression = _factory.ObjectNotEqual(output, _factory.Null(baseType)); 565!loweredInput.Type.OriginalDefinition.Equals(_factory.Compilation.GetWellKnownType(WellKnownType.System_ValueTuple_TRest)) && 583addCode(_factory.AssignmentExpression(inputTemp, loweredInput)); 663addCode(_factory.AssignmentExpression(tempToHoldInput, expr));
Lowering\LocalRewriter\LocalRewriter_BasePatternSwitchLocalRewriter.cs (1)
53armBuilder.Add(_factory.HiddenSequencePoint());
Lowering\LocalRewriter\LocalRewriter_IsPatternOperator.cs (24)
111_factory.Syntax = node.Syntax; 118resultBuilder.Add(_factory.Block(loweredDag)); 120LocalSymbol resultTemp = _factory.SynthesizedLocal(node.Type, node.Syntax, kind: SynthesizedLocalKind.LoweringTemp); 121LabelSymbol afterIsPatternExpression = _factory.GenerateLabel("afterIsPatternExpression"); 125resultBuilder.Add(_factory.Block(_statements.ToArray())); 126resultBuilder.Add(_factory.Label(trueLabel)); 127resultBuilder.Add(_factory.Assignment(_factory.Local(resultTemp), _factory.Literal(true))); 128resultBuilder.Add(_factory.Goto(afterIsPatternExpression)); 129resultBuilder.Add(_factory.Label(falseLabel)); 130resultBuilder.Add(_factory.Assignment(_factory.Local(resultTemp), _factory.Literal(false))); 131resultBuilder.Add(_factory.Label(afterIsPatternExpression)); 133return _factory.SpillSequence(_tempAllocator.AllTemps().Add(resultTemp), resultBuilder.ToImmutableAndFree(), _factory.Local(resultTemp)); 181test = _factory.Sequence(ImmutableArray<LocalSymbol>.Empty, _sideEffectBuilder.ToImmutable(), test); 193_factory.Syntax = test.Syntax; 208testExpression = _factory.Not(testExpression); 291_sideEffectBuilder.Add(_factory.AssignmentExpression(left, right)); 304AddConjunct(_factory.Literal(true)); 311result = (result == null) ? conjunct : _factory.LogicalAnd(result, conjunct); 319result = _factory.Sequence(allTemps, ImmutableArray<BoundExpression>.Empty, result);
Lowering\LocalRewriter\LocalRewriter_PatternSwitchStatement.cs (14)
73_factory.Syntax = node.Syntax; 81var instrumentedExpression = _localRewriter.Instrumenter.InstrumentSwitchStatementExpression(node, loweredSwitchGoverningExpression, _factory); 90result.Add(_factory.ExpressionStatement(instrumentedExpression)); 99node.GetDecisionDagForLowering(_factory.Compilation), 109result.Add(_factory.NoOp(NoOpStatementFlavor.Default)); 111result.Add(_factory.HiddenSequencePoint()); 124result.Add(_factory.Block(loweredDag)); 132_factory.Syntax = section.Syntax; 137sectionBuilder.Add(_factory.Label(switchLabel.Label)); 149result.Add(_factory.StatementList(statements)); 169_factory.Syntax = node.Syntax; 171result.Add(_factory.HiddenSequencePoint()); 173result.Add(_factory.Label(node.BreakLabel)); 174BoundStatement translatedSwitch = _factory.Block(outerVariables.ToImmutableAndFree(), node.InnerLocalFunctions, result.ToImmutableAndFree());
Lowering\LocalRewriter\LocalRewriter_SwitchExpression.cs (25)
48_factory.Syntax = node.Syntax; 54node.GetDecisionDagForLowering(_factory.Compilation, out LabelSymbol? defaultLabel), 84result.Add(_factory.Block(loweredDag)); 89LocalSymbol resultTemp = _factory.SynthesizedLocal(node.Type, node.Syntax, kind: SynthesizedLocalKind.LoweringTemp); 90LabelSymbol afterSwitchExpression = _factory.GenerateLabel("afterSwitchExpression"); 93_factory.Syntax = arm.Syntax; 96sectionBuilder.Add(_factory.Label(arm.Label)); 99loweredValue = this._localRewriter.Instrumenter.InstrumentSwitchExpressionArmExpression(arm.Value, loweredValue, _factory); 101sectionBuilder.Add(_factory.Assignment(_factory.Local(resultTemp), loweredValue)); 102sectionBuilder.Add(_factory.Goto(afterSwitchExpression)); 106result.Add(_factory.StatementList(statements)); 120_factory.Syntax = node.Syntax; 123result.Add(_factory.Label(defaultLabel)); 126var objectType = _factory.SpecialType(SpecialType.System_Object); 129_factory.WellKnownMember(WellKnownMember.System_Runtime_CompilerServices_SwitchExpressionException__ctorObject, isOptional: true) is MethodSymbol) 133throwCall = ConstructThrowSwitchExpressionExceptionHelperCall(_factory, _factory.Convert(objectType, savedInputExpression, c)); 137throwCall = (_factory.WellKnownMember(WellKnownMember.System_Runtime_CompilerServices_SwitchExpressionException__ctor, isOptional: true) is MethodSymbol) ? 138ConstructThrowSwitchExpressionExceptionParameterlessHelperCall(_factory) : 139ConstructThrowInvalidOperationExceptionHelperCall(_factory); 146result.Add(_factory.HiddenSequencePoint()); 147result.Add(_factory.Label(afterSwitchExpression)); 153return _factory.SpillSequence(outerVariables.ToImmutableAndFree(), result.ToImmutableAndFree(), _factory.Local(resultTemp));