public override void Compile(CompileContext context) { List <Process> processes = this.Processes; for (int i = 0; i < processes.Count; i++) { Process p = processes[i]; string innerTypeName = "Parallel" + (i + 1); if (context.Options.Optimize && !p.IsUsed) { continue; } TypeInfo newProcType = null; if (p.HasRestrictionsOrPreProcess || !(p is ProcessConstant)) { newProcType = p.CompileNewProcessStart(context, innerTypeName); } p.Compile(context); if (newProcType != null) { p.CompileNewProcessEnd(context); EmitRunProcess(context, newProcType, false, p.LexicalInfo, true); } } }
public override void Compile(CompileContext context) { List <Process> processes = this.Processes; for (int i = 0; i < processes.Count; i++) { Process p = (Process)processes[i]; if (context.Options.Optimize && !p.IsUsed) { continue; } if (p is ProcessConstant && !p.HasRestrictionsOrPreProcess) { //Don't need to create a special proc just for wrapping this ProcessConstant pc = (ProcessConstant)p; EmitRunProcess(context, context.GetType(pc.Name), true, p.LexicalInfo, true); } else { string innerTypeName = "NonDeterministic" + (i + 1); TypeInfo newType = p.CompileNewProcessStart(context, innerTypeName); p.Compile(context); p.CompileNewProcessEnd(context); EmitRunProcess(context, newType, true, p.LexicalInfo, true); } } }