public MethodDesc GetArrayMethod(ArrayMethodKind kind) { if (_methods == null) { InitializeMethods(); } return(_methods[(int)kind]); }
/// <summary> /// lazily fetches or creates a new array method. /// </summary> private ArrayMethod GetArrayMethod(Cci.IArrayTypeReference arrayType, ArrayMethodKind id) { var key = ValueTuple.Create((byte)id, arrayType); ArrayMethod result; var dict = _dict; if (!dict.TryGetValue(key, out result)) { result = MakeArrayMethod(arrayType, id); result = dict.GetOrAdd(key, result); } return(result); }
private static ArrayMethod MakeArrayMethod(IArrayTypeReference arrayType, ArrayMethodKind id) { switch (id) { case ArrayMethodKind.CTOR: return(new ArrayConstructor(arrayType)); case ArrayMethodKind.GET: return(new ArrayGet(arrayType)); case ArrayMethodKind.SET: return(new ArraySet(arrayType)); case ArrayMethodKind.ADDRESS: return(new ArrayAddress(arrayType)); } throw ExceptionUtilities.UnexpectedValue(id); }
/// <summary> /// lazily fetches or creates a new array method. /// </summary> private ArrayMethod GetArrayMethod(IArrayTypeReference arrayType, ArrayMethodKind id) { var key = new KeyValuePair <byte, IArrayTypeReference>((byte)id, arrayType); ArrayMethod result; var dict = _dict; if (!dict.TryGetValue(key, out result)) { result = MakeArrayMethod(arrayType, id); if (dict.ContainsKey(key)) { result = dict[key]; } else { dict.Add(key, result); } } return(result); }
public MethodDesc GetArrayMethod(ArrayMethodKind kind) { if (_methods == null) InitializeMethods(); return _methods[(int)kind]; }
internal ArrayMethod(ArrayType owningType, ArrayMethodKind kind) { _owningType = owningType; _kind = kind; }
internal ArrayMethod(ArrayType owningType, ArrayMethodKind kind) { _owningType = owningType; _kind = kind; }
private static ArrayMethod MakeArrayMethod(Cci.IArrayTypeReference arrayType, ArrayMethodKind id) { switch (id) { case ArrayMethodKind.CTOR: return new ArrayConstructor(arrayType); case ArrayMethodKind.GET: return new ArrayGet(arrayType); case ArrayMethodKind.SET: return new ArraySet(arrayType); case ArrayMethodKind.ADDRESS: return new ArrayAddress(arrayType); } throw ExceptionUtilities.UnexpectedValue(id); }
/// <summary> /// lazily fetches or creates a new array method. /// </summary> private ArrayMethod GetArrayMethod(Cci.IArrayTypeReference arrayType, ArrayMethodKind id) { var key = ValueTuple.Create((byte)id, arrayType); ArrayMethod result; var dict = _dict; if (!dict.TryGetValue(key, out result)) { result = MakeArrayMethod(arrayType, id); result = dict.GetOrAdd(key, result); } return result; }