ComputeStackSize() static private method

static private ComputeStackSize ( Instruction instruction, int>.Dictionary &stack_sizes, int &stack_size, int &max_stack ) : void
instruction Instruction
stack_sizes int>.Dictionary
stack_size int
max_stack int
return void
        private void ComputeHeader()
        {
            int size = 0;
            Collection <Instruction> instructions = this.body.instructions;

            Instruction[] instructionArray = instructions.items;
            int           num  = instructions.size;
            int           num1 = 0;
            int           num2 = 0;
            Dictionary <Instruction, int> instructions1 = null;

            if (this.body.HasExceptionHandlers)
            {
                this.ComputeExceptionHandlerStackSize(ref instructions1);
            }
            for (int i = 0; i < num; i++)
            {
                Instruction instruction = instructionArray[i];
                instruction.offset = size;
                size += instruction.GetSize();
                CodeWriter.ComputeStackSize(instruction, ref instructions1, ref num1, ref num2);
            }
            this.body.code_size      = size;
            this.body.max_stack_size = num2;
        }
        private static void ComputeStackSize(Instruction instruction, ref Dictionary <Instruction, int> stack_sizes, ref int stack_size, ref int max_stack)
        {
            int num;

            if (stack_sizes != null && stack_sizes.TryGetValue(instruction, out num))
            {
                stack_size = num;
            }
            max_stack = System.Math.Max(max_stack, stack_size);
            CodeWriter.ComputeStackDelta(instruction, ref stack_size);
            max_stack = System.Math.Max(max_stack, stack_size);
            CodeWriter.CopyBranchStackSize(instruction, ref stack_sizes, stack_size);
            CodeWriter.ComputeStackSize(instruction, ref stack_size);
        }