@@ -438,6 +438,8 @@ FieldInfo[] fields
438438 return [ jumpTable , MergeNodeExpressions ( firstScope . Nodes ) ] ;
439439
440440 // Merge all node expressions into a single block
441+ // This reduces the number of blocks in the final state-machine
442+
441443 static BlockExpression MergeNodeExpressions ( List < NodeExpression > nodes )
442444 {
443445 var mergedExpressions = new List < Expression > ( 32 ) ;
@@ -497,21 +499,24 @@ public static class StateMachineBuilder
497499 private static readonly ModuleBuilder ModuleBuilder ;
498500 private static int __id ;
499501
502+ const string RuntimeAssemblyName = "RuntimeStateMachineAssembly" ;
503+ const string RuntimeModuleName = "RuntimeStateMachineModule" ;
504+ const string StateMachineTypeName = "StateMachine" ;
505+
500506 static StateMachineBuilder ( )
501507 {
502508 BuildStateMachineMethod = typeof ( StateMachineBuilder )
503509 . GetMethods ( BindingFlags . NonPublic | BindingFlags . Static )
504510 . First ( method => method . Name == nameof ( Create ) && method . IsGenericMethod ) ;
505511
506512 // Create the state machine module
507- var assemblyName = new AssemblyName ( "RuntimeStateMachineAssembly" ) ;
513+ var assemblyName = new AssemblyName ( RuntimeAssemblyName ) ;
508514 var assemblyBuilder = AssemblyBuilder . DefineDynamicAssembly ( assemblyName , AssemblyBuilderAccess . Run ) ;
509- ModuleBuilder = assemblyBuilder . DefineDynamicModule ( "RuntimeStateMachineModule" ) ;
515+ ModuleBuilder = assemblyBuilder . DefineDynamicModule ( RuntimeModuleName ) ;
510516 }
511517
512518 internal static Expression Create ( Type resultType , LoweringResult source )
513519 {
514- // If the result type is void, use the internal IVoidResult type
515520 if ( resultType == typeof ( void ) )
516521 resultType = typeof ( IVoidResult ) ;
517522
@@ -522,7 +527,8 @@ internal static Expression Create( Type resultType, LoweringResult source )
522527
523528 internal static Expression Create < TResult > ( LoweringResult source )
524529 {
525- var typeName = $ "StateMachine{ Interlocked . Increment ( ref __id ) } ";
530+ var typeId = Interlocked . Increment ( ref __id ) ;
531+ var typeName = $ "{ StateMachineTypeName } { typeId } ";
526532
527533 var stateMachineBuilder = new StateMachineBuilder < TResult > ( ModuleBuilder , typeName ) ;
528534 var stateMachineExpression = stateMachineBuilder . CreateStateMachine ( source , __id ) ;
0 commit comments