private void ProcessMethodWorkSet() { while (_methodQ.Count > 0) { MethodCallInfo mci = _methodQ.Dequeue(); MethodBase method = mci.GetStrongestOverride(); if (FactUniverse.Instance.HaveFacts(method) && FactUniverse.Instance.GetFacts(method).IsDecompilable) { Resolve(mci); } } }
private MethodDescriptor ConstructMethodDescriptor(MethodCallInfo mci, bool special) { MethodBase method = mci.GetStrongestOverride(); MethodDescriptor md = new MethodDescriptor( method, mci.EvaluatedArgumentsWithoutThis, special ? mci.ArgumentVariabilities : VariabilityPattern.CreateDefault(method).Pattern); var caller = mci.CallerTemplate.Decompilee; var callerPd = caller as ProcessDescriptor; var callerMd = caller as MethodDescriptor; if (callerPd != null) { md.CallingProcess = callerPd; } else { md.CallingProcess = callerMd.CallingProcess; } return(md); }
private MethodDescriptor ConstructMethodDescriptor(MethodCallInfo mci, bool special) { MethodBase method = mci.GetStrongestOverride(); MethodDescriptor md = new MethodDescriptor( method, mci.EvaluatedArgumentsWithoutThis, special ? mci.ArgumentVariabilities : VariabilityPattern.CreateDefault(method).Pattern); var caller = mci.CallerTemplate.Decompilee; var callerPd = caller as ProcessDescriptor; var callerMd = caller as MethodDescriptor; if (callerPd != null) md.CallingProcess = callerPd; else md.CallingProcess = callerMd.CallingProcess; return md; }