static private ComputeStackSize ( |
||
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); }