internal LocalVariable AddClosureVariable(ParameterExpression variable) { if (this._closureVariables == null) { this._closureVariables = new Dictionary<ParameterExpression, LocalVariable>(); } LocalVariable variable2 = new LocalVariable(this._closureVariables.Count, true, false); this._closureVariables.Add(variable, variable2); return variable2; }
public LocalDefinition DefineLocal(ParameterExpression variable, int start) { VariableScope scope; VariableScope scope2; LocalVariable variable2 = new LocalVariable(this._localCount++, false, false); this._maxLocalCount = Math.Max(this._localCount, this._maxLocalCount); if (this._variables.TryGetValue(variable, out scope)) { scope2 = new VariableScope(variable2, start, scope); if (scope.ChildScopes == null) { scope.ChildScopes = new List<VariableScope>(); } scope.ChildScopes.Add(scope2); } else { scope2 = new VariableScope(variable2, start, null); } this._variables[variable] = scope2; return new LocalDefinition(variable2.Index, variable); }
public VariableScope(LocalVariable variable, int start, VariableScope parent) { Variable = variable; Start = start; Parent = parent; }
public VariableScope(LocalVariable variable, int start, LocalVariables.VariableScope parent) { this.Variable = variable; this.Start = start; this.Parent = parent; }
public bool TryGetLocalOrClosure(ParameterExpression var, out LocalVariable local) { VariableScope scope; if (this._variables.TryGetValue(var, out scope)) { local = scope.Variable; return true; } if ((this._closureVariables != null) && this._closureVariables.TryGetValue(var, out local)) { return true; } local = null; return false; }
internal LocalVariable AddClosureVariable(ParameterExpression variable) { if (_closureVariables == null) { _closureVariables = new Dictionary<ParameterExpression, LocalVariable>(); } LocalVariable result = new LocalVariable(_closureVariables.Count, true, false); _closureVariables.Add(variable, result); return result; }
public LocalDefinition DefineLocal(ParameterExpression variable, int start) { //ContractUtils.RequiresNotNull(variable, "variable"); //ContractUtils.Requires(start >= 0, "start", "start must be positive"); LocalVariable result = new LocalVariable(_localCount++, false, false); _maxLocalCount = System.Math.Max(_localCount, _maxLocalCount); VariableScope existing, newScope; if (_variables.TryGetValue(variable, out existing)) { newScope = new VariableScope(result, start, existing); if (existing.ChildScopes == null) { existing.ChildScopes = new List<VariableScope>(); } existing.ChildScopes.Add(newScope); } else { newScope = new VariableScope(result, start, null); } _variables[variable] = newScope; return new LocalDefinition(result.Index, variable); }