public object Call(ICallerContext context, object[] args)
            {
                if (fastCallable == null) {
                    fastCallable = MakeFastCallable();
                }

                if (fastCallable == null) {
                    return CallReflected(context, args);
                } else {
                    return fastCallable.Call(context, args);
                }
            }
 public ReversedFastCallableWrapper(FastCallable target)
 {
     this.target = target;
 }
 public void AddMethod(MethodBase info)
 {
     if (optimizedTarget != null) optimizedTarget = null;
     if (targets != null) {
         MethodBase[] ni = new MethodBase[targets.Length + 1];
         targets.CopyTo(ni, 0);
         ni[targets.Length] = info;
         targets = ni;
     } else {
         targets = new MethodBase[] { info };
     }
     UpdateFunctionInfo(info);
 }
 private void CreateInvoker()
 {
     MethodInfo delegateInfo = type.GetMethod("Invoke");
     Debug.Assert(delegateInfo != null);
     invoker = MethodBinder.MakeFastCallable("invoke", delegateInfo, false);
 }