Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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);
        }