Пример #1
0
        protected override IMethodNode CreateUnboxingStubNode(MethodDesc method)
        {
            if (method.IsCanonicalMethod(CanonicalFormKind.Any) && !method.HasInstantiation)
            {
                // Unboxing stubs to canonical instance methods need a special unboxing instantiating stub that unboxes
                // 'this' and also provides an instantiation argument (we do a calling convention conversion).
                // The unboxing instantiating stub is emitted by UTC.
                if (CompilationModuleGroup.ContainsMethodBody(method, true))
                {
                    return(NonExternMethodSymbol(method, true));
                }

                return(_importedNodeProvider.ImportedMethodCodeNode(this, method, true));
            }
            else
            {
                // Otherwise we just unbox 'this' and don't touch anything else.
                return(new UnboxingStubNode(method, Target));
            }
        }