[Mono-bugs] [Bug 378011] Cecil generates too large values for maxstack

bugzilla_noreply at novell.com bugzilla_noreply at novell.com
Wed Apr 9 06:31:11 EDT 2008


https://bugzilla.novell.com/show_bug.cgi?id=378011

User andrea.ornstein at st.com added comment
https://bugzilla.novell.com/show_bug.cgi?id=378011#c3





--- Comment #3 from Andrea Carlo Ornstein <andrea.ornstein at st.com>  2008-04-09 04:31:11 MST ---
in GetPopDelta and GetPushDelta
instruction.operand for FlowControll.Call aren't always a MethodReference
they can also be a CallSite

the patch has to be patched :) with

GetPopDelta:
        case StackBehaviour.Varpush:
                if (code.FlowControl != FlowControl.Call)
                        break;

!               IMethodSignature method =
(IMethodSignature)instruction.Operand;
                return IsVoid (method.ReturnType.ReturnType) ? 0 : 1;

GetPushDelta:
        case StackBehaviour.Varpop:
                if (code == OpCodes.Ret)
                        return IsVoid (current.ReturnType.ReturnType) ? 0 : 1;

                if (code.FlowControl != FlowControl.Call)
                        break;

!               IMethodSignature method =
(IMethodSignature)instruction.Operand;
                int count = method.Parameters.Count;
                if (method.HasThis && code != OpCodes.Newobj)
                        ++count;

                return count;


With this changes it seems to work for us.
Thanks


-- 
Configure bugmail: https://bugzilla.novell.com/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.


More information about the mono-bugs mailing list