private static int NumberOfElementsPushed(Mono.Cecil.Cil.StackBehaviour s, object operand = null) { switch (s) { case Mono.Cecil.Cil.StackBehaviour.Push0: return(0); case Mono.Cecil.Cil.StackBehaviour.Push1_push1: return(2); case Mono.Cecil.Cil.StackBehaviour.Push1: case Mono.Cecil.Cil.StackBehaviour.Pushi: case Mono.Cecil.Cil.StackBehaviour.Pushi8: case Mono.Cecil.Cil.StackBehaviour.Pushr4: case Mono.Cecil.Cil.StackBehaviour.Pushr8: case Mono.Cecil.Cil.StackBehaviour.Pushref: return(1); case Mono.Cecil.Cil.StackBehaviour.Varpush: if (operand is Mono.Cecil.MethodReference) { return(((Mono.Cecil.MethodReference)(operand)).ReturnType.ReturnType.FullName == "System.Void" ? 0 : 1); } else { throw new Exception("This is an unexpected exception"); } default: throw new InvalidProgramException(); } }
private static int NumberOfElementsPoped(Mono.Cecil.Cil.StackBehaviour s, object operand = null) { switch (s) { case Mono.Cecil.Cil.StackBehaviour.Pop0: return(0); case Mono.Cecil.Cil.StackBehaviour.Pop1: case Mono.Cecil.Cil.StackBehaviour.Popi: case Mono.Cecil.Cil.StackBehaviour.Popref: return(1); case Mono.Cecil.Cil.StackBehaviour.Pop1_pop1: case Mono.Cecil.Cil.StackBehaviour.Popi_pop1: case Mono.Cecil.Cil.StackBehaviour.Popi_popi: case Mono.Cecil.Cil.StackBehaviour.Popi_popi8: case Mono.Cecil.Cil.StackBehaviour.Popi_popr4: case Mono.Cecil.Cil.StackBehaviour.Popi_popr8: case Mono.Cecil.Cil.StackBehaviour.Popref_pop1: case Mono.Cecil.Cil.StackBehaviour.Popref_popi: return(2); //case Mono.Cecil.Cil.StackBehaviour.Popref_popi_pop1: Hvorfor mangler denne? case Mono.Cecil.Cil.StackBehaviour.Popref_popi_popi: case Mono.Cecil.Cil.StackBehaviour.Popref_popi_popi8: case Mono.Cecil.Cil.StackBehaviour.Popref_popi_popr4: case Mono.Cecil.Cil.StackBehaviour.Popref_popi_popr8: case Mono.Cecil.Cil.StackBehaviour.Popref_popi_popref: return(3); case Mono.Cecil.Cil.StackBehaviour.Varpop: if (operand == null) { throw new Exception("This is an unexpected exception"); } return(((Mono.Cecil.MethodReference)(operand)).Parameters.Count); default: throw new InvalidProgramException(); } }