protected override string ToString(string constructName, HashSet <CFGBlockLogicalConstruct> printedBlocks, LogicalFlowBuilderContext context) { V_0 = new StringBuilder(); dummyVar0 = V_0.Append(this.get_LoopType()); dummyVar1 = V_0.AppendLine("LogicalConstruct"); dummyVar2 = V_0.AppendLine("{"); V_2 = this.GetSortedArrayFromCollection <ISingleEntrySubGraph>(this.get_Children()); V_3 = 0; while (V_3 < (int)V_2.Length) { V_4 = (LogicalConstructBase)V_2[V_3]; stackVariable27 = V_4.ToString(context); stackVariable29 = new String[1]; stackVariable29[0] = Environment.get_NewLine(); V_5 = stackVariable27.Split(stackVariable29, 1); V_6 = 0; while (V_6 < (int)V_5.Length) { V_7 = V_5[V_6]; dummyVar3 = V_0.Append('\t'); dummyVar4 = V_0.AppendLine(V_7); V_6 = V_6 + 1; } printedBlocks.UnionWith(V_4.get_CFGBlocks()); V_3 = V_3 + 1; } V_1 = String.Format("\tFollowNode: {0}", this.NodeILOffset(context, this.get_CFGFollowNode())); dummyVar5 = V_0.AppendLine(V_1); dummyVar6 = V_0.AppendLine("}"); return(V_0.ToString()); }
private void GenerateStackVariables() { V_0 = this.stackVariableInstructionsSet.GetEnumerator(); try { while (V_0.MoveNext()) { V_1 = V_0.get_Current(); V_3 = this.unionFinder.Find(V_1); if (!this.instructionOffsetToVariableDefinitionMap.TryGetValue(V_3, out V_2)) { V_4 = this.stackVariablesCount; this.stackVariablesCount = V_4 + 1; V_2 = new VariableDefinition(String.Concat("stackVariable", V_4.ToString()), null, this.methodContext.get_Method()); this.instructionOffsetToVariableDefinitionMap.Add(V_3, V_2); } if (V_3 == V_1) { continue; } this.instructionOffsetToVariableDefinitionMap.Add(V_1, V_2); } } finally { ((IDisposable)V_0).Dispose(); } V_0 = this.exceptionVariableInstructionsSet.GetEnumerator(); try { while (V_0.MoveNext()) { V_5 = V_0.get_Current(); if (this.unionFinder.Find(V_5) == V_5) { continue; } throw new Exception("Invalid stack usage"); } } finally { ((IDisposable)V_0).Dispose(); } return; }
private string GetModuleKey(ModuleDefinition module, ILanguage language, bool renameInvalidMembers) { if (!ProjectGenerationDecompilationCacheService.moduleContextsKeysMap.ContainsKey(module)) { V_0 = ProjectGenerationDecompilationCacheService.locker; V_1 = false; try { Monitor.Enter(V_0, ref V_1); if (ProjectGenerationDecompilationCacheService.moduleContextsKeysMap.ContainsKey(module)) { goto Label0; } else { V_2 = new FileInfo(module.get_FilePath()); stackVariable17 = new String[9]; stackVariable17[0] = module.get_FilePath(); stackVariable17[1] = " : "; V_4 = V_2.get_LastWriteTime(); stackVariable17[2] = V_4.ToString(); stackVariable17[3] = " : "; stackVariable17[4] = module.get_Name().ToString(); stackVariable17[5] = " "; stackVariable17[6] = language.get_Name(); stackVariable17[7] = " "; stackVariable17[8] = renameInvalidMembers.ToString(); V_3 = String.Concat(stackVariable17); ProjectGenerationDecompilationCacheService.moduleContextsKeysMap.Add(module, V_3); V_5 = V_3; } } finally { if (V_1) { Monitor.Exit(V_0); } } return(V_5); } Label0: return(ProjectGenerationDecompilationCacheService.moduleContextsKeysMap.get_Item(module)); }
private void WriteCustomAttributeConstructorArguments(Collection <CustomAttributeArgument> constructorArguments) { V_0 = constructorArguments.GetEnumerator(); try { while (V_0.MoveNext()) { V_1 = V_0.get_Current(); V_2 = V_1.get_Type(); if (!V_2.get_IsArray()) { V_5 = 2; if (V_2.get_IsPrimitive() || String.op_Equality(V_2.get_FullName(), "System.String")) { V_5 = 3; } V_6 = V_2.Resolve(); if (V_6 == null) { this.WriteNotResolvedReference(V_2.get_FullName(), V_2, "Enum keyword might be missing. Please, locate the assembly where the type is defined."); } else { if (V_6.get_IsEnum()) { V_2 = this.GetEnumerationUnderlayingType(V_6); V_5 = 3; } this.WriteType(V_2, V_5); } } else { if ((V_2 as ArrayType).get_ElementType().get_IsPrimitive() || String.op_Equality(V_2.get_FullName(), "System.String")) { V_3 = 3; } else { V_3 = 2; } this.WriteType((V_2 as ArrayType).get_ElementType(), V_3); this.Write("["); V_4 = (V_1.get_Value() as Array).get_Length(); this.WriteLiteral(V_4.ToString()); this.Write("]"); } this.Write("("); this.WriteSpace(); if (V_1.get_Value() as Boolean == false) { if (V_1.get_Value() as String == null) { if (V_1.get_Value() as CustomAttributeArgument[] == null) { this.WriteLiteral(V_1.get_Value().ToString()); } else { this.WriteArrayValues(V_1.get_Value() as CustomAttributeArgument[]); } } else { this.WriteStringLiteral((String)V_1.get_Value()); } } else { this.WriteBooleanLiteral((Boolean)V_1.get_Value()); } this.WriteSpace(); this.Write(")"); this.WriteLine(); } } finally { V_0.Dispose(); } return; }
private void AnalyzeStackUsage() { this.traversed = new Boolean[(int)this.controlFlowGraph.get_Blocks().Length]; this.RecursiveDfs(this.controlFlowGraph.get_Blocks()[0], new Int32[0]); V_0 = this.exceptionHandlers.GetEnumerator(); try { while (V_0.MoveNext()) { V_1 = V_0.get_Current(); V_2 = this.controlFlowGraph.get_InstructionToBlockMapping().get_Item(V_1.get_HandlerStart().get_Offset()); if (V_1.get_HandlerType() == 4 || V_1.get_HandlerType() == 2) { this.RecursiveDfs(V_2, new Int32[0]); } else { if (V_1.get_HandlerType() == 1) { V_3 = this.controlFlowGraph.get_InstructionToBlockMapping().get_Item(V_1.get_FilterStart().get_Offset()); stackVariable96 = new Int32[1]; stackVariable96[0] = -V_1.get_FilterStart().get_Offset(); this.RecursiveDfs(V_3, stackVariable96); stackVariable103 = this.instructionOffsetToVariableDefinitionMap; stackVariable107 = -V_1.get_FilterStart().get_Offset(); V_4 = this.exceptionVariableCount; this.exceptionVariableCount = V_4 + 1; stackVariable103.set_Item(stackVariable107, new VariableDefinition(String.Concat("exception_", V_4.ToString()), Utilities.GetCorlibTypeReference(Type.GetTypeFromHandle(//