private void CallStatic(InstructionNode node) { var call = node.Operand1; var result = node.Result; var method = call.Method; var operands = node.GetOperands(); Debug.Assert(method != null); if (MethodCompiler.Compiler.CompilerData.IsMethodInlined(method)) { // If above is true, then a race condition occurred between: // 1) after inline stage of this method, and // 2) theinline evaluation stage of the target method // the only best option at this point is to stop compiling this method. // Note: It should already be scheduled to be re-compiled! //MethodCompiler.Stop(); //return; } //Debug.Assert(!MethodCompiler.Compiler.CompilerData.IsMethodInlined(method)); operands.RemoveAt(0); var context = new Context(node); context.Empty(); MakeCall(context, call, result, operands); Debug.Assert(method == call.Method); MethodScanner.MethodDirectInvoked(call.Method, Method); }
private void CallStatic(Context context) { var call = context.Operand1; var result = context.Result; var method = call.Method; var operands = context.GetOperands(); Debug.Assert(method != null); operands.RemoveAt(0); context.Empty(); MakeCall(context, call, result, operands); MethodScanner.MethodDirectInvoked(call.Method, Method); }
private void CallStatic(InstructionNode node) { var call = node.Operand1; var result = node.Result; var method = call.Method; var operands = node.GetOperands(); Debug.Assert(method != null); operands.RemoveAt(0); var context = new Context(node); context.Empty(); MakeCall(context, call, result, operands); MethodScanner.MethodDirectInvoked(call.Method, Method); }