예제 #1
0
 /// <summary>
 /// Create a thunk that calls an externally defined (e.g., native) function, passing
 /// a dependency node to the function it calls.
 /// </summary>
 internal SingleArgumentJumpThunk JumpThunk(ExternSymbolNode target, ISymbolNode argument)
 {
     return(_jumpThunks.GetOrAdd(new Tuple <ExternSymbolNode, ISymbolNode>(target, argument)));
 }
        protected override void EmitCode(NodeFactory factory, ref ARMEmitter encoder, bool relocsOnly)
        {
            NYI_Assert = new ExternSymbolNode("NYI_Assert");

            switch (Id)
            {
            case ReadyToRunHelperId.NewHelper:
            {
                TypeDesc target = (TypeDesc)Target;
                encoder.EmitJMP(NYI_Assert);
            }
            break;

            case ReadyToRunHelperId.VirtualCall:
            {
                MethodDesc targetMethod = (MethodDesc)Target;
                encoder.EmitJMP(NYI_Assert);
            }
            break;

            case ReadyToRunHelperId.IsInstanceOf:
            {
                TypeDesc target = (TypeDesc)Target;
                encoder.EmitJMP(NYI_Assert);
            }
            break;

            case ReadyToRunHelperId.CastClass:
            {
                TypeDesc target = (TypeDesc)Target;
                encoder.EmitJMP(NYI_Assert);
            }
            break;

            case ReadyToRunHelperId.NewArr1:
            {
                TypeDesc target = (TypeDesc)Target;
                encoder.EmitJMP(NYI_Assert);
            }
            break;

            case ReadyToRunHelperId.GetNonGCStaticBase:
            {
                MetadataType target = (MetadataType)Target;
                encoder.EmitJMP(NYI_Assert);
            }
            break;

            case ReadyToRunHelperId.GetThreadStaticBase:
            {
                MetadataType target = (MetadataType)Target;
                encoder.EmitJMP(NYI_Assert);
            }
            break;

            case ReadyToRunHelperId.GetGCStaticBase:
            {
                MetadataType target = (MetadataType)Target;
                encoder.EmitJMP(NYI_Assert);
            }
            break;

            case ReadyToRunHelperId.DelegateCtor:
            {
                DelegateCreationInfo target = (DelegateCreationInfo)Target;
                encoder.EmitJMP(NYI_Assert);
            }
            break;

            case ReadyToRunHelperId.ResolveVirtualFunction:
            {
                MethodDesc targetMethod = (MethodDesc)Target;
                encoder.EmitJMP(NYI_Assert);
            }
            break;

            default:
                throw new NotImplementedException();
            }
        }