Bring jbevain/cecil's commit a43bc63f8e7668cbdba2dea44dd8465f73781cfb, Fix handling...
authorMiguel de Icaza <miguel@gnome.org>
Wed, 18 Apr 2012 22:41:51 +0000 (18:41 -0400)
committerMiguel de Icaza <miguel@gnome.org>
Wed, 18 Apr 2012 22:54:18 +0000 (18:54 -0400)
mcs/class/Mono.Cecil/Mono.Cecil.Cil/CodeWriter.cs
mcs/class/Mono.Cecil/Mono.Cecil/IMethodSignature.cs
mcs/class/Mono.Cecil/Mono.Cecil/ParameterDefinition.cs

index 02876aad5af77e4ded13000e1d316bc30b568ba0..b2d1ae7178243646296e65197c6527497a896b56 100644 (file)
@@ -425,7 +425,7 @@ namespace Mono.Cecil.Cil {
                        case FlowControl.Call: {
                                var method = (IMethodSignature) instruction.operand;
                                stack_size -= (method.HasParameters ? method.Parameters.Count : 0)
-                                       + (method.HasThis && instruction.opcode.Code != Code.Newobj ? 1 : 0);
+                                       + (method.HasImplicitThis () && instruction.opcode.Code != Code.Newobj ? 1 : 0);
                                stack_size += (method.ReturnType.etype == ElementType.Void ? 0 : 1)
                                        + (method.HasThis && instruction.opcode.Code == Code.Newobj ? 1 : 0);
                                break;
index 491deec5db0c46e43ecdabe79c0ab238fe6e287b..e3d288ba9f0c7022ab2c9329ab45833a39e35de9 100644 (file)
@@ -46,6 +46,11 @@ namespace Mono.Cecil {
 
        static partial class Mixin {
 
+               public static bool HasImplicitThis (this IMethodSignature self)
+               {
+                       return self.HasThis && !self.ExplicitThis;
+               }
+
                public static void MethodSignatureFullName (this IMethodSignature self, StringBuilder builder)
                {
                        builder.Append ("(");
index d0a65cc6f404bd20b2a1042fd3c08bca9ae99a86..26152bd8df53e1927934376f8fc8ca4b30b241bf 100644 (file)
@@ -54,7 +54,7 @@ namespace Mono.Cecil {
                                if (method == null)
                                        return -1;
 
-                               return method.HasThis ? index + 1 : index;
+                               return method.HasImplicitThis () ? index + 1 : index;
                        }
                }