From c257f1678736895ce64d055390f1c37e77d686ac Mon Sep 17 00:00:00 2001 From: de4dot Date: Tue, 27 Sep 2011 22:06:43 +0200 Subject: [PATCH] Methodsrewriter is now working --- AssemblyData/AssemblyData.csproj | 2 + AssemblyData/Utils.cs | 4 + AssemblyData/methodsrewriter/CodeGenerator.cs | 70 +++++- .../methodsrewriter/IMethodsRewriter.cs | 2 - .../methodsrewriter/MethodsRewriter.cs | 222 ++++++++++-------- AssemblyData/methodsrewriter/Operand.cs | 4 + AssemblyData/methodsrewriter/Resolver.cs | 101 +++++++- AssemblyData/methodsrewriter/ResolverUtils.cs | 72 +++++- .../methodsrewriter/TypeInstanceResolver.cs | 102 ++++++++ AssemblyData/methodsrewriter/TypeResolver.cs | 64 +---- .../MemberReferenceExpander.cs | 29 ++- blocks/blocks.csproj | 1 + de4dot.code/de4dot.code.csproj | 1 - de4dot.code/renamer/RefExpander.cs | 1 + 14 files changed, 504 insertions(+), 171 deletions(-) create mode 100644 AssemblyData/methodsrewriter/TypeInstanceResolver.cs rename {de4dot.code/renamer => blocks}/MemberReferenceExpander.cs (90%) diff --git a/AssemblyData/AssemblyData.csproj b/AssemblyData/AssemblyData.csproj index 7cfd4201..0338f065 100644 --- a/AssemblyData/AssemblyData.csproj +++ b/AssemblyData/AssemblyData.csproj @@ -51,12 +51,14 @@ + + diff --git a/AssemblyData/Utils.cs b/AssemblyData/Utils.cs index 5d7233b7..70999916 100644 --- a/AssemblyData/Utils.cs +++ b/AssemblyData/Utils.cs @@ -69,6 +69,10 @@ namespace AssemblyData { static class Utils { static Random random = new Random(); + public static uint getRandomUint() { + return (uint)(random.NextDouble() * uint.MaxValue); + } + public static Type getDelegateType(Type returnType, Type[] args) { Type[] types; if (returnType == typeof(void)) { diff --git a/AssemblyData/methodsrewriter/CodeGenerator.cs b/AssemblyData/methodsrewriter/CodeGenerator.cs index 8dab19c1..0aee4c2b 100644 --- a/AssemblyData/methodsrewriter/CodeGenerator.cs +++ b/AssemblyData/methodsrewriter/CodeGenerator.cs @@ -56,6 +56,7 @@ namespace AssemblyData.methodsrewriter { } IMethodsRewriter methodsRewriter; + string methodName; IList allInstructions; IList allExceptionHandlers; ILGenerator ilg; @@ -69,13 +70,15 @@ namespace AssemblyData.methodsrewriter { List locals; List