Exemplo n.º 1
0
        ILVariable RegisterVariable(VariableKind kind, IType type, StackType stackType, string name = null)
        {
            var variable = new ILVariable(kind, type, stackType);

            if (string.IsNullOrWhiteSpace(name))
            {
                name = "I_" + (helperVariableCount++);
                variable.HasGeneratedName = true;
            }
            variable.Name = name;
            Variables.Add(variable);
            return(variable);
        }
Exemplo n.º 2
0
        public ILVariable RegisterVariable(VariableKind kind, IType type, string name = null)
        {
            int index    = Variables.Where(v => v.Kind == kind).MaxOrDefault(v => v.Index, -1) + 1;
            var variable = new ILVariable(kind, type, index);

            if (string.IsNullOrWhiteSpace(name))
            {
                switch (kind)
                {
                case VariableKind.Local:
                case VariableKind.ForeachLocal:
                    name = "V_";
                    break;

                case VariableKind.Parameter:
                    name = "P_";
                    break;

                case VariableKind.Exception:
                    name = "E_";
                    break;

                case VariableKind.StackSlot:
                    name = "S_";
                    break;

                case VariableKind.InitializerTarget:
                    name = "I_";
                    break;

                default:
                    throw new ArgumentOutOfRangeException(nameof(kind));
                }
                name += index;
                variable.HasGeneratedName = true;
            }
            variable.Name = name;
            Variables.Add(variable);
            return(variable);
        }