コード例 #1
0
 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());
 }
コード例 #2
0
		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;
 }
コード例 #5
0
		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(//