1 write to F
Microsoft.CodeAnalysis.CSharp (1)
Lowering\StateMachineRewriter\StateMachineRewriter.cs (1)
62
this.
F
= new SyntheticBoundNodeFactory(method, body.Syntax, compilationState, diagnostics);
407 references to F
Microsoft.CodeAnalysis.CSharp (407)
Lowering\AsyncRewriter\AsyncRewriter.AsyncIteratorRewriter.cs (202)
126
NamedTypeSymbol boolType =
F
.SpecialType(SpecialType.System_Boolean);
129
_promiseOfValueOrEndField =
F
.StateMachineField(
130
F
.WellKnownType(WellKnownType.System_Threading_Tasks_Sources_ManualResetValueTaskSourceCore_T).Construct(boolType),
137
_currentField =
F
.StateMachineField(elementType, GeneratedNames.MakeIteratorCurrentFieldName());
140
_disposeModeField =
F
.StateMachineField(boolType, GeneratedNames.MakeDisposeModeFieldName());
145
_combinedTokensField =
F
.StateMachineField(
146
F
.WellKnownType(WellKnownType.System_Threading_CancellationTokenSource),
162
F
.CurrentFunction = stateMachineType.Constructor;
164
bodyBuilder.Add(
F
.BaseInitialization());
169
bodyBuilder.Add(
F
.Assignment(
F
.InstanceField(stateField),
F
.Parameter(
F
.CurrentFunction.Parameters[0]))); // this.state = state;
175
bodyBuilder.Add(
F
.Assignment(
F
.InstanceField(initialThreadIdField), managedThreadId));
179
F
.WellKnownMethod(WellKnownMember.Microsoft_CodeAnalysis_Runtime_LocalStoreTracker__GetNewStateMachineInstanceId) is { } getId)
182
bodyBuilder.Add(
F
.Assignment(
F
.InstanceField(instanceIdField),
F
.Call(receiver: null, getId)));
185
bodyBuilder.Add(
F
.Return());
186
F
.CloseMethod(
F
.Block(bodyBuilder.ToImmutableAndFree()));
193
return
F
.Assignment(
194
F
.InstanceField(_builderField),
195
F
.StaticCall(
205
F
.Assignment(
206
F
.Local(stateMachineLocal),
207
F
.New(stateMachineType.Constructor.AsMember(frameType),
F
.Literal(initialState))));
215
parameter.Type.Equals(
F
.Compilation.GetWellKnownType(WellKnownType.System_Threading_CancellationToken), TypeCompareKind.ConsiderEverything))
232
BoundParameter tokenParameter =
F
.Parameter(getEnumeratorMethod.Parameters[0]);
233
BoundFieldAccess combinedTokens =
F
.Field(
F
.This(), _combinedTokensField);
234
result =
F
.If(
236
F
.Call(parameterProxy, WellKnownMember.System_Threading_CancellationToken__Equals,
F
.Default(parameterProxy.Type)),
238
thenClause:
F
.Assignment(resultParameter, tokenParameter),
239
elseClauseOpt:
F
.If(
241
F
.LogicalOr(
242
F
.Call(tokenParameter, WellKnownMember.System_Threading_CancellationToken__Equals, parameterProxy),
243
F
.Call(tokenParameter, WellKnownMember.System_Threading_CancellationToken__Equals,
F
.Default(tokenParameter.Type))),
245
thenClause:
F
.Assignment(resultParameter, parameterProxy),
246
elseClauseOpt:
F
.Block(
248
F
.Assignment(combinedTokens,
F
.StaticCall(WellKnownMember.System_Threading_CancellationTokenSource__CreateLinkedTokenSource, parameterProxy, tokenParameter)),
250
F
.Assignment(resultParameter,
F
.Property(combinedTokens, WellKnownMember.System_Threading_CancellationTokenSource__Token)))));
256
result =
F
.Assignment(resultParameter, parameterProxy);
270
F
.Return(
271
F
.Local(stateMachineVariable)));
273
return
F
.Block(bodyBuilder.ToImmutableAndFree());
298
F
.WellKnownType(WellKnownType.System_Collections_Generic_IAsyncEnumerator_T)
301
MethodSymbol IAsyncEnumerableOfElementType_MoveNextAsync =
F
.WellKnownMethod(WellKnownMember.System_Collections_Generic_IAsyncEnumerator_T__MoveNextAsync)
306
MethodSymbol promise_GetStatus =
F
.WellKnownMethod(WellKnownMember.System_Threading_Tasks_Sources_ManualResetValueTaskSourceCore_T__GetStatus)
309
MethodSymbol promise_GetResult =
F
.WellKnownMethod(WellKnownMember.System_Threading_Tasks_Sources_ManualResetValueTaskSourceCore_T__GetResult)
314
MethodSymbol valueTaskT_ctorValue =
F
.WellKnownMethod(WellKnownMember.System_Threading_Tasks_ValueTask_T__ctorValue)
317
MethodSymbol valueTaskT_ctor =
F
.WellKnownMethod(WellKnownMember.System_Threading_Tasks_ValueTask_T__ctorSourceAndToken)
329
BoundStatement ifFinished =
F
.If(
331
F
.IntEqual(
F
.InstanceField(stateField),
F
.Literal(StateMachineState.FinishedState)),
333
thenClause:
F
.Return(
F
.Default(moveNextAsyncReturnType)));
336
var versionSymbol =
F
.SynthesizedLocal(
F
.SpecialType(SpecialType.System_Int16));
337
var versionLocal =
F
.Local(versionSymbol);
338
var versionInit =
F
.Assignment(versionLocal,
F
.Call(
F
.Field(
F
.This(), _promiseOfValueOrEndField), promise_get_Version));
340
var ifPromiseReady =
F
.If(
342
F
.IntEqual(
343
F
.Call(
F
.Field(
F
.This(), _promiseOfValueOrEndField), promise_GetStatus, versionLocal),
344
F
.Literal(1)),
346
thenClause:
F
.Return(
F
.New(valueTaskT_ctorValue,
F
.Call(
F
.Field(
F
.This(), _promiseOfValueOrEndField), promise_GetResult, versionLocal))));
351
var returnStatement =
F
.Return(
F
.New(valueTaskT_ctor,
F
.This(), versionLocal));
353
F
.CloseMethod(
F
.Block(
377
BoundFieldAccess promiseField =
F
.InstanceField(_promiseOfValueOrEndField);
378
var resetMethod = (MethodSymbol)
F
.WellKnownMethod(WellKnownMember.System_Threading_Tasks_Sources_ManualResetValueTaskSourceCore_T__Reset, isOptional: true)
381
callReset =
F
.ExpressionStatement(
F
.Call(promiseField, resetMethod));
386
instSymbol =
F
.SynthesizedLocal(this.stateMachineType);
389
var instLocal =
F
.Local(instSymbol);
390
instAssignment =
F
.Assignment(instLocal,
F
.This());
393
startCall =
F
.ExpressionStatement(
394
F
.Call(
395
F
.InstanceField(_builderField),
400
promise_get_Version =
F
.WellKnownMethod(WellKnownMember.System_Threading_Tasks_Sources_ManualResetValueTaskSourceCore_T__get_Version)
426
MethodSymbol IAsyncDisposable_DisposeAsync =
F
.WellKnownMethod(WellKnownMember.System_IAsyncDisposable__DisposeAsync);
439
BoundStatement ifInvalidState =
F
.If(
441
F
.IntGreaterThanOrEqual(
F
.InstanceField(stateField),
F
.Literal(StateMachineState.NotStartedOrRunningState)),
443
thenClause:
F
.Throw(
F
.New(
F
.WellKnownType(WellKnownType.System_NotSupportedException))));
445
BoundStatement ifFinished =
F
.If(
447
F
.IntEqual(
F
.InstanceField(stateField),
F
.Literal(StateMachineState.FinishedState)),
449
thenClause:
F
.Return(
F
.Default(returnType)));
452
F
.WellKnownMethod(WellKnownMember.System_Threading_Tasks_ValueTask__ctor)
456
var returnStatement =
F
.Return(
F
.New(valueTask_ctor,
F
.This(),
F
.Call(
F
.InstanceField(_promiseOfValueOrEndField), promise_get_Version)));
458
F
.CloseMethod(
F
.Block(
462
F
.Assignment(
F
.InstanceField(_disposeModeField),
F
.Literal(true)), // disposeMode = true;
478
F
.WellKnownType(WellKnownType.System_Collections_Generic_IAsyncEnumerator_T)
482
F
.WellKnownMethod(WellKnownMember.System_Collections_Generic_IAsyncEnumerator_T__get_Current)
487
F
.CloseMethod(
F
.Block(
F
.Return(
F
.InstanceField(_currentField))));
496
F
.WellKnownType(WellKnownType.System_Threading_Tasks_Sources_IValueTaskSource_T)
497
.Construct(
F
.SpecialType(SpecialType.System_Boolean));
500
F
.WellKnownMethod(WellKnownMember.System_Threading_Tasks_Sources_IValueTaskSource_T__GetResult)
504
F
.WellKnownMethod(WellKnownMember.System_Threading_Tasks_Sources_ManualResetValueTaskSourceCore_T__GetResult)
511
F
.CloseMethod(
F
.Return(
512
F
.Call(
F
.InstanceField(_promiseOfValueOrEndField), promise_GetResult,
F
.Parameter(IValueTaskSourceOfBool_GetResult.Parameters[0]))));
521
F
.WellKnownType(WellKnownType.System_Threading_Tasks_Sources_IValueTaskSource_T)
522
.Construct(
F
.SpecialType(SpecialType.System_Boolean));
525
F
.WellKnownMethod(WellKnownMember.System_Threading_Tasks_Sources_IValueTaskSource_T__GetStatus)
529
F
.WellKnownMethod(WellKnownMember.System_Threading_Tasks_Sources_ManualResetValueTaskSourceCore_T__GetStatus)
536
F
.CloseMethod(
F
.Return(
537
F
.Call(
F
.InstanceField(_promiseOfValueOrEndField), promise_GetStatus,
F
.Parameter(IValueTaskSourceOfBool_GetStatus.Parameters[0]))));
547
F
.WellKnownType(WellKnownType.System_Threading_Tasks_Sources_IValueTaskSource_T)
548
.Construct(
F
.SpecialType(SpecialType.System_Boolean));
551
F
.WellKnownMethod(WellKnownMember.System_Threading_Tasks_Sources_IValueTaskSource_T__OnCompleted)
555
F
.WellKnownMethod(WellKnownMember.System_Threading_Tasks_Sources_ManualResetValueTaskSourceCore_T__OnCompleted)
561
F
.CloseMethod(
F
.Block(
563
F
.ExpressionStatement(
564
F
.Call(
F
.InstanceField(_promiseOfValueOrEndField), promise_OnCompleted,
565
F
.Parameter(IValueTaskSourceOfBool_OnCompleted.Parameters[0]),
566
F
.Parameter(IValueTaskSourceOfBool_OnCompleted.Parameters[1]),
567
F
.Parameter(IValueTaskSourceOfBool_OnCompleted.Parameters[2]),
568
F
.Parameter(IValueTaskSourceOfBool_OnCompleted.Parameters[3]))),
569
F
.Return())); // return;
579
F
.WellKnownMethod(WellKnownMember.System_Threading_Tasks_Sources_IValueTaskSource__GetResult);
582
F
.WellKnownMethod(WellKnownMember.System_Threading_Tasks_Sources_ManualResetValueTaskSourceCore_T__GetResult)
588
F
.CloseMethod(
F
.Block(
590
F
.ExpressionStatement(
F
.Call(
F
.InstanceField(_promiseOfValueOrEndField), promise_GetResult,
F
.Parameter(IValueTaskSource_GetResult.Parameters[0]))),
592
F
.Return()));
603
F
.WellKnownMethod(WellKnownMember.System_Threading_Tasks_Sources_IValueTaskSource__GetStatus);
606
F
.WellKnownMethod(WellKnownMember.System_Threading_Tasks_Sources_ManualResetValueTaskSourceCore_T__GetStatus)
613
F
.CloseMethod(
F
.Return(
614
F
.Call(
F
.InstanceField(_promiseOfValueOrEndField), promise_GetStatus,
F
.Parameter(IValueTaskSource_GetStatus.Parameters[0]))));
625
MethodSymbol IValueTaskSource_OnCompleted =
F
.WellKnownMethod(WellKnownMember.System_Threading_Tasks_Sources_IValueTaskSource__OnCompleted);
628
F
.WellKnownMethod(WellKnownMember.System_Threading_Tasks_Sources_ManualResetValueTaskSourceCore_T__OnCompleted)
634
F
.CloseMethod(
F
.Block(
636
F
.ExpressionStatement(
637
F
.Call(
F
.InstanceField(_promiseOfValueOrEndField), promise_OnCompleted,
638
F
.Parameter(IValueTaskSource_OnCompleted.Parameters[0]),
639
F
.Parameter(IValueTaskSource_OnCompleted.Parameters[1]),
640
F
.Parameter(IValueTaskSource_OnCompleted.Parameters[2]),
641
F
.Parameter(IValueTaskSource_OnCompleted.Parameters[3]))),
642
F
.Return())); // return;
651
F
.WellKnownType(WellKnownType.System_Collections_Generic_IAsyncEnumerable_T)
655
F
.WellKnownMethod(WellKnownMember.System_Collections_Generic_IAsyncEnumerable_T__GetAsyncEnumerator)
670
F
.Assignment(
F
.Field(
F
.This(), stateField),
F
.Literal(initialState)));
678
F
.Assignment(
F
.InstanceField(_disposeModeField),
F
.Literal(false)));
683
MethodSymbol setResultMethod =
F
.WellKnownMethod(WellKnownMember.System_Threading_Tasks_Sources_ManualResetValueTaskSourceCore_T__SetResult, isOptional: true);
689
MethodSymbol setExceptionMethod =
F
.WellKnownMethod(WellKnownMember.System_Threading_Tasks_Sources_ManualResetValueTaskSourceCore_T__SetException, isOptional: true);
700
F:
F
,
Lowering\AsyncRewriter\AsyncRewriter.cs (60)
34
_constructedSuccessfully = AsyncMethodBuilderMemberCollection.TryCreate(
F
, method, this.stateMachineType.TypeMap, out _asyncMethodBuilderMemberCollection);
132
return Binder.GetWellKnownTypeMember(
F
.Compilation, member, bag, body.Syntax.Location);
141
stateField =
F
.StateMachineField(
F
.SpecialType(SpecialType.System_Int32), GeneratedNames.MakeStateMachineStateFieldName(), isPublic: true);
142
_builderField =
F
.StateMachineField(_asyncMethodBuilderMemberCollection.BuilderType, GeneratedNames.AsyncBuilderFieldName(), isPublic: true);
144
var instrumentations =
F
.ModuleBuilderOpt.GetMethodBodyInstrumentations(method);
147
instanceIdField =
F
.StateMachineField(
F
.SpecialType(SpecialType.System_UInt64), GeneratedNames.MakeStateMachineStateIdFieldName(), isPublic: true);
153
var IAsyncStateMachine_MoveNext =
F
.WellKnownMethod(WellKnownMember.System_Runtime_CompilerServices_IAsyncStateMachine_MoveNext);
154
var IAsyncStateMachine_SetStateMachine =
F
.WellKnownMethod(WellKnownMember.System_Runtime_CompilerServices_IAsyncStateMachine_SetStateMachine);
172
if (
F
.CurrentType.TypeKind == TypeKind.Class)
174
F
.CloseMethod(
F
.Return());
178
F
.CloseMethod(
180
F
.Block(
181
F
.ExpressionStatement(
182
F
.Call(
183
F
.Field(
F
.This(), _builderField),
185
new BoundExpression[] {
F
.Parameter(
F
.CurrentFunction.Parameters[0]) })),
186
F
.Return()));
197
F
.CurrentFunction = stateMachineType.Constructor;
198
F
.CloseMethod(
F
.Block(ImmutableArray.Create(
F
.BaseInitialization(),
F
.Return())));
208
F
.Assignment(
209
F
.Local(stateMachineLocal),
210
F
.New(frameType.InstanceConstructors[0])));
221
if (!AsyncMethodBuilderMemberCollection.TryCreate(
F
, method, null, out methodScopeAsyncMethodBuilderMemberCollection))
223
return new BoundBadStatement(
F
.Syntax, ImmutableArray<BoundNode>.Empty, hasErrors: true);
230
F
.Assignment(
231
F
.Field(
F
.Local(stateMachineVariable), _builderField.AsMember(frameType)),
232
F
.StaticCall(
240
F
.Assignment(
241
F
.Field(
F
.Local(stateMachineVariable), stateField.AsMember(frameType)),
242
F
.Literal(StateMachineState.NotStartedOrRunningState)));
246
F
.WellKnownMethod(WellKnownMember.Microsoft_CodeAnalysis_Runtime_LocalStoreTracker__GetNewStateMachineInstanceId) is { } getId)
249
F
.Assignment(
250
F
.Field(
F
.Local(stateMachineVariable), instanceIdField.AsMember(frameType)),
251
F
.Call(receiver: null, getId)));
258
startMethod.CheckConstraints(new ConstraintsHelper.CheckConstraintsArgs(
F
.Compilation,
F
.Compilation.Conversions, includeNullability: false,
F
.Syntax.Location, diagnostics));
261
F
.ExpressionStatement(
262
F
.Call(
263
F
.Field(
F
.Local(stateMachineVariable), _builderField.AsMember(frameType)),
265
ImmutableArray.Create<BoundExpression>(
F
.Local(stateMachineVariable)))));
268
?
F
.Return()
269
:
F
.Return(
270
F
.Property(
271
F
.Field(
F
.Local(stateMachineVariable), _builderField.AsMember(frameType)),
274
return
F
.Block(bodyBuilder.ToImmutableAndFree());
283
F:
F
,
Lowering\IteratorRewriter\IteratorRewriter.cs (59)
142
Binder.TryGetSpecialTypeMember(
F
.Compilation, member, body.Syntax, bag, out symbol);
148
Binder.GetSpecialType(
F
.Compilation, type, body.Syntax, bag);
175
Debug.Assert(
F
.ModuleBuilderOpt is not null);
177
stateField =
F
.StateMachineField(
F
.SpecialType(SpecialType.System_Int32), GeneratedNames.MakeStateMachineStateFieldName());
179
var instrumentations =
F
.ModuleBuilderOpt.GetMethodBodyInstrumentations(method);
182
instanceIdField =
F
.StateMachineField(
F
.SpecialType(SpecialType.System_UInt64), GeneratedNames.MakeStateMachineStateIdFieldName());
186
_currentField =
F
.StateMachineField(_elementType, GeneratedNames.MakeIteratorCurrentFieldName());
212
var IDisposable_Dispose =
F
.SpecialMethod(SpecialMember.System_IDisposable__Dispose);
214
var IEnumerator_MoveNext =
F
.SpecialMethod(SpecialMember.System_Collections_IEnumerator__MoveNext);
215
var IEnumerator_Reset =
F
.SpecialMethod(SpecialMember.System_Collections_IEnumerator__Reset);
216
var IEnumerator_get_Current =
F
.SpecialProperty(SpecialMember.System_Collections_IEnumerator__Current).GetMethod;
218
var IEnumeratorOfElementType =
F
.SpecialType(SpecialType.System_Collections_Generic_IEnumerator_T).Construct(ImmutableArray.Create(_elementType));
219
var IEnumeratorOfElementType_get_Current =
F
.SpecialProperty(SpecialMember.System_Collections_Generic_IEnumerator_T__Current).GetMethod.AsMember(IEnumeratorOfElementType);
235
F
.CloseMethod(
F
.Return(
F
.Field(
F
.This(), _currentField)));
241
F
.CloseMethod(
F
.Throw(
F
.New(
F
.WellKnownType(WellKnownType.System_NotSupportedException))));
247
F
.CloseMethod(
F
.Return(
F
.Field(
F
.This(), _currentField)));
256
var IEnumerable_GetEnumerator =
F
.SpecialMethod(SpecialMember.System_Collections_IEnumerable__GetEnumerator);
258
var IEnumerableOfElementType =
F
.SpecialType(SpecialType.System_Collections_Generic_IEnumerable_T).Construct(_elementType.Type);
259
var IEnumerableOfElementType_GetEnumerator =
F
.SpecialMethod(SpecialMember.System_Collections_Generic_IEnumerable_T__GetEnumerator).AsMember(IEnumerableOfElementType);
266
F
.CloseMethod(
F
.Return(
F
.Call(
F
.This(), getEnumeratorGeneric)));
279
F
.CurrentFunction = stateMachineType.Constructor;
281
bodyBuilder.Add(
F
.BaseInitialization());
282
bodyBuilder.Add(
F
.Assignment(
F
.Field(
F
.This(), stateField),
F
.Parameter(
F
.CurrentFunction.Parameters[0]))); // this.state = state;
287
bodyBuilder.Add(
F
.Assignment(
F
.Field(
F
.This(), initialThreadIdField), managedThreadId));
291
F
.WellKnownMethod(WellKnownMember.Microsoft_CodeAnalysis_Runtime_LocalStoreTracker__GetNewStateMachineInstanceId) is { } getId)
293
bodyBuilder.Add(
F
.Assignment(
F
.InstanceField(instanceIdField),
F
.Call(receiver: null, getId)));
296
bodyBuilder.Add(
F
.Return());
297
F
.CloseMethod(
F
.Block(bodyBuilder.ToImmutableAndFree()));
307
F
.Assignment(
308
F
.Local(stateMachineLocal),
309
F
.New(stateMachineType.Constructor.AsMember(frameType),
F
.Literal(initialState))));
320
F
.Return(
321
F
.Local(stateMachineVariable)));
323
return
F
.Block(bodyBuilder.ToImmutableAndFree());
331
F
,
Lowering\StateMachineRewriter\StateMachineRewriter.cs (86)
63
Debug.Assert(TypeSymbol.Equals(
F
.CurrentType, method.ContainingType, TypeCompareKind.ConsiderEverything2));
64
Debug.Assert(
F
.Syntax == body.Syntax);
100
F
.OpenNestedType(stateMachineType);
108
initialThreadIdField =
F
.StateMachineField(
F
.SpecialType(SpecialType.System_Int32), GeneratedNames.MakeIteratorCurrentThreadIdFieldName());
118
var variablesToHoist = IteratorAndAsyncCaptureWalker.Analyze(
F
.Compilation, method, body, diagnostics.DiagnosticBag);
123
return new BoundBadStatement(
F
.Syntax, ImmutableArray<BoundNode>.Empty, hasErrors: true);
146
bool isDebugBuild =
F
.Compilation.Options.OptimizationLevel == OptimizationLevel.Debug;
205
F
.ModuleBuilderOpt.Translate(fieldType, declaratorSyntax, diagnostics.DiagnosticBag),
225
field =
F
.StateMachineField(fieldType, fieldName, new LocalSlotDebugInfo(synthesizedKind, id), slotIndex);
240
var proxyField =
F
.StateMachineField(containingType, GeneratedNames.ThisProxyFieldName(), isPublic: true, isThis: true);
246
F
.StateMachineField(containingType, GeneratedNames.StateMachineThisParameterProxyName(), isPublic: true, isThis: true) : proxyField;
255
var proxyField =
F
.StateMachineFieldForRegularParameter(typeMap.SubstituteType(parameter.Type).Type, parameter.Name, parameter, isPublic: !PreserveInitialParameterValuesAndThreadId);
260
var field =
F
.StateMachineFieldForRegularParameter(typeMap.SubstituteType(parameter.Type).Type, GeneratedNames.StateMachineParameterProxyFieldName(parameter.Name), parameter, isPublic: true);
274
var optimizationLevel =
F
.Compilation.Options.OptimizationLevel;
289
F
.CurrentFunction = method;
293
LocalSymbol stateMachineVariable =
F
.SynthesizedLocal(frameType, null);
301
return
F
.Block(
319
F
.Syntax,
321
(
F
, stateMachineVariable));
323
bodyBuilder.Add(
F
.Assignment(leftExpression,
F
.This()));
333
F
.Syntax,
335
(
F
, stateMachineVariable));
337
bodyBuilder.Add(
F
.Assignment(leftExpression,
F
.Parameter(parameter)));
342
return
F
.Block(builtBody);
350
var result = new SynthesizedStateMachineDebuggerHiddenMethod(methodName, methodToImplement, (StateMachineTypeSymbol)
F
.CurrentType, null, hasMethodBodyDependency);
351
F
.ModuleBuilderOpt.AddSynthesizedDefinition(
F
.CurrentType, result.GetCciAdapter());
352
F
.CurrentFunction = result;
358
var prop = new SynthesizedStateMachineProperty(getterToImplement, (StateMachineTypeSymbol)
F
.CurrentType);
359
F
.ModuleBuilderOpt.AddSynthesizedDefinition(
F
.CurrentType, prop.GetCciAdapter());
362
F
.ModuleBuilderOpt.AddSynthesizedDefinition(
F
.CurrentType, getter.GetCciAdapter());
364
F
.CurrentFunction = getter;
370
var result = new SynthesizedStateMachineMoveNextMethod(methodToImplement, (StateMachineTypeSymbol)
F
.CurrentType);
371
F
.ModuleBuilderOpt.AddSynthesizedDefinition(
F
.CurrentType, result.GetCciAdapter());
372
F
.CurrentFunction = result;
386
var currentManagedThreadIdProperty = (PropertySymbol)
F
.WellKnownMember(WellKnownMember.System_Environment__CurrentManagedThreadId, isOptional: true);
392
return
F
.Call(null, currentManagedThreadIdMethod);
396
return
F
.Property(
F
.Property(WellKnownMember.System_Threading_Thread__CurrentThread), WellKnownMember.System_Threading_Thread__ManagedThreadId);
427
var resultVariable =
F
.SynthesizedLocal(stateMachineType, null);
429
BoundStatement makeIterator =
F
.Assignment(
F
.Local(resultVariable),
F
.New(stateMachineType.Constructor,
F
.Literal(initialState)));
431
var thisInitialized =
F
.GenerateLabel("thisInitialized");
442
F
.Assignment(
F
.Local(resultVariable),
F
.This()));
449
F
.Goto(thisInitialized));
452
makeIterator =
F
.If(
454
condition:
F
.LogicalAnd(
455
F
.IntEqual(
F
.Field(
F
.This(), stateField),
F
.Literal(StateMachineState.FinishedState)),
456
F
.IntEqual(
F
.Field(
F
.This(), initialThreadIdField), managedThreadId)),
457
thenClause:
F
.Block(thenBuilder.ToImmutableAndFree()),
473
F
.Syntax,
475
(
F
, resultVariable));
477
var rightExpression = copySrc[method.ThisParameter].Replacement(
F
.Syntax, static (stateMachineType, F) => F.This(),
F
);
479
bodyBuilder.Add(
F
.Assignment(leftExpression, rightExpression));
483
bodyBuilder.Add(
F
.Label(thisInitialized));
492
F
.Syntax,
494
(
F
, resultVariable));
497
BoundExpression parameterProxy = copySrc[parameter].Replacement(
F
.Syntax, static (stateMachineType, F) => F.This(),
F
);
504
bodyBuilder.Add(
F
.Return(
F
.Local(resultVariable)));
505
F
.CloseMethod(
F
.Block(ImmutableArray.Create(resultVariable), bodyBuilder.ToImmutableAndFree()));
516
F
.Assignment(
F
.Field(
F
.This(), stateField),
F
.Literal(initialState)));
524
return
F
.Assignment(resultParameter, parameterProxy);
532
return (object)
F
.WellKnownMember(WellKnownMember.System_Threading_Thread__ManagedThreadId, isOptional: true) != null ||
533
(object)
F
.WellKnownMember(WellKnownMember.System_Environment__CurrentManagedThreadId, isOptional: true) != null;