예제 #1
0
 public void AppendMangledName(NameMangler nameMangler, Utf8StringBuilder sb)
 {
     sb.Append("__pinvoke_");
     sb.Append(_moduleName);
     sb.Append("__");
     sb.Append(_entryPointName);
 }
예제 #2
0
        public void AppendMangledName(NameMangler nameMangler, Utf8StringBuilder sb)
        {
            if (_dispatchMapTableIndex == IndexNotSet)
            {
                throw new InvalidOperationException("MangledName called before InterfaceDispatchMap index was initialized.");
            }

            sb.Append(nameMangler.CompilationUnitPrefix).Append("__InterfaceDispatchMap_").Append(_dispatchMapTableIndex.ToStringInvariant());
        }
예제 #3
0
 public override void AppendMangledName(NameMangler nameMangler, Utf8StringBuilder sb)
 {
     switch (_id)
     {
         case ReadyToRunHelperId.NewHelper:
             sb.Append("__NewHelper_").Append(NodeFactory.NameMangler.GetMangledTypeName((TypeDesc)_target));
             break;
         case ReadyToRunHelperId.NewArr1:
             sb.Append("__NewArr1_").Append(NodeFactory.NameMangler.GetMangledTypeName((TypeDesc)_target));
             break;
         case ReadyToRunHelperId.VirtualCall:
             sb.Append("__VirtualCall_").Append(NodeFactory.NameMangler.GetMangledMethodName((MethodDesc)_target));
             break;
         case ReadyToRunHelperId.IsInstanceOf:
             sb.Append("__IsInstanceOf_").Append(NodeFactory.NameMangler.GetMangledTypeName((TypeDesc)_target));
             break;
         case ReadyToRunHelperId.CastClass:
             sb.Append("__CastClass_").Append(NodeFactory.NameMangler.GetMangledTypeName((TypeDesc)_target));
             break;
         case ReadyToRunHelperId.GetNonGCStaticBase:
             sb.Append("__GetNonGCStaticBase_").Append(NodeFactory.NameMangler.GetMangledTypeName((TypeDesc)_target));
             break;
         case ReadyToRunHelperId.GetGCStaticBase:
             sb.Append("__GetGCStaticBase_").Append(NodeFactory.NameMangler.GetMangledTypeName((TypeDesc)_target));
             break;
         case ReadyToRunHelperId.GetThreadStaticBase:
             sb.Append("__GetThreadStaticBase_").Append(NodeFactory.NameMangler.GetMangledTypeName((TypeDesc)_target));
             break;
         case ReadyToRunHelperId.DelegateCtor:
             {
                 var createInfo = (DelegateCreationInfo)_target;
                 sb.Append("__DelegateCtor_");
                 createInfo.Constructor.AppendMangledName(nameMangler, sb);
                 sb.Append("__");
                 createInfo.Target.AppendMangledName(nameMangler, sb);
                 if (createInfo.Thunk != null)
                 {
                     sb.Append("__");
                     createInfo.Thunk.AppendMangledName(nameMangler, sb);
                 }
             }
             break;
         case ReadyToRunHelperId.ResolveVirtualFunction:
             sb.Append("__ResolveVirtualFunction_");
             sb.Append(NodeFactory.NameMangler.GetMangledMethodName((MethodDesc)_target));
             break;
         case ReadyToRunHelperId.ResolveGenericVirtualMethod:
             sb.Append("__ResolveGenericVirtualMethod_");
             sb.Append(NodeFactory.NameMangler.GetMangledMethodName((MethodDesc)_target));
             break;
         default:
             throw new NotImplementedException();
     }
 }
예제 #4
0
 public virtual void AppendMangledName(NameMangler nameMangler, Utf8StringBuilder sb)
 {
     sb.Append(nameMangler.CompilationUnitPrefix + "__SealedVTable_" + nameMangler.NodeMangler.EEType(_type));
 }
예제 #5
0
 protected abstract string GetNonImportedName(NameMangler nameMangler);
 public void AppendMangledName(NameMangler nameMangler, Utf8StringBuilder sb)
 {
     sb.Append(nameMangler.CompilationUnitPrefix).Append("__typemanager_indirection");
 }
예제 #7
0
 public void AppendMangledName(NameMangler nameMangler, Utf8StringBuilder sb)
 {
     sb.Append("__indirection");
     _indirectedNode.AppendMangledName(nameMangler, sb);
 }
예제 #8
0
 public override void AppendMangledName(NameMangler nameMangler, Utf8StringBuilder sb)
 {
     sb.Append("MethodHandle_");
     sb.Append(nameMangler.GetMangledMethodName(_method));
 }
예제 #9
0
 void ISymbolNode.AppendMangledName(NameMangler nameMangler, Utf8StringBuilder sb)
 {
     AppendMangledName(nameMangler, sb);
 }
예제 #10
0
 protected override sealed string GetNonImportedName(NameMangler nameMangler) => UnboxingStubNode.GetMangledName(nameMangler, Method);
예제 #11
0
 public override void AppendMangledName(NameMangler nameMangler, Utf8StringBuilder sb)
 {
     sb.Append("unbox_").Append(NodeFactory.NameMangler.GetMangledMethodName(_target));
 }
예제 #12
0
 protected override sealed string GetNonImportedName(NameMangler nameMangler) => nameMangler.NodeMangler.MethodGenericDictionary(Method);
예제 #13
0
 protected override sealed string GetNonImportedName(NameMangler nameMangler) => nameMangler.GetMangledMethodName(Method).ToString();
예제 #14
0
 protected override sealed string GetNonImportedName(NameMangler nameMangler) => throw new NotImplementedException();
예제 #15
0
 protected override sealed string GetNonImportedName(NameMangler nameMangler) => NonGCStaticsNode.GetMangledName(Type, nameMangler);
예제 #16
0
 protected override sealed string GetNonImportedName(NameMangler nameMangler) => nameMangler.NodeMangler.EEType(Type);
예제 #17
0
 public abstract string GetMangledName(NameMangler nameMangler);
예제 #18
0
 public void AppendMangledName(NameMangler nameMangler, Utf8StringBuilder sb)
 {
     sb.Append("GCRefMap->");
     sb.Append(_importSection.Name);
 }
예제 #19
0
 public override string GetMangledName(NameMangler nameMangler)
 {
     return $"MethodHandle_{nameMangler.GetMangledMethodName(_method)}";
 }
        public static LLVMValueRef GetSymbolValuePointer(LLVMModuleRef module, ISymbolNode symbol, NameMangler nameMangler, bool objectWriterUse = false)
        {
            if (symbol is WebAssemblyMethodCodeNode)
            {
                ThrowHelper.ThrowInvalidProgramException();
            }

            string       symbolAddressGlobalName = symbol.GetMangledName(nameMangler) + "___SYMBOL";
            LLVMValueRef symbolAddress;

            if (s_symbolValues.TryGetValue(symbolAddressGlobalName, out symbolAddress))
            {
                return(symbolAddress);
            }
            var intPtrType = LLVM.PointerType(LLVM.Int32Type(), 0);
            var myGlobal   = LLVM.AddGlobalInAddressSpace(module, intPtrType, symbolAddressGlobalName, 0);

            LLVM.SetGlobalConstant(myGlobal, (LLVMBool)true);
            LLVM.SetLinkage(myGlobal, LLVMLinkage.LLVMInternalLinkage);
            s_symbolValues.Add(symbolAddressGlobalName, myGlobal);
            return(myGlobal);
        }
예제 #21
0
 public override void AppendMangledName(NameMangler nameMangler, Utf8StringBuilder sb)
 {
     sb.Append("NonGCStaticBase_");
     sb.Append(nameMangler.GetMangledTypeName(_type));
 }
예제 #22
0
 public void AppendMangledName(NameMangler nameMangler, Utf8StringBuilder sb)
 {
     sb.Append(GetMangledName(_type, nameMangler));
 }
        public override void AppendMangledName(NameMangler nameMangler, Utf8StringBuilder sb)
        {
            Utf8String mangledContextName;
            if (_dictionaryOwner is MethodDesc)
                mangledContextName = NodeFactory.NameMangler.GetMangledMethodName((MethodDesc)_dictionaryOwner);
            else
                mangledContextName = NodeFactory.NameMangler.GetMangledTypeName((TypeDesc)_dictionaryOwner);

            sb.Append("__GenericLookupFromType_").Append(mangledContextName).Append("_");
            _lookupSignature.AppendMangledName(nameMangler, sb);
        }
예제 #24
0
 public ILScanNodeFactory(CompilerTypeSystemContext context, CompilationModuleGroup compilationModuleGroup, MetadataManager metadataManager, NameMangler nameMangler)
     : base(context, compilationModuleGroup, metadataManager, nameMangler, new LazyGenericsDisabledPolicy())
 {
 }
예제 #25
0
 public void AppendMangledName(NameMangler nameMangler, Utf8StringBuilder sb)
 {
     sb.Append(NodeFactory.CompilationUnitPrefix).Append("__field_to_offset_map");
 }
예제 #26
0
 public void AppendMangledName(NameMangler nameMangler, Utf8StringBuilder sb)
 {
     sb.Append(nameMangler.CompilationUnitPrefix).Append("__Module");
 }
예제 #27
0
 public void AppendMangledName(NameMangler nameMangler, Utf8StringBuilder sb)
 {
     sb.Append("__optionalfields_");
     _owner.AppendMangledName(nameMangler, sb);
 }
예제 #28
0
 public override void AppendMangledName(NameMangler nameMangler, Utf8StringBuilder sb)
 {
     sb.Append("NonGCStaticBase_");
     sb.Append(nameMangler.GetMangledTypeName(_type));
 }
예제 #29
0
 public void AppendMangledName(NameMangler nameMangler, Utf8StringBuilder sb)
 {
     sb.Append(nameMangler.CompilationUnitPrefix).Append("__method_to_entrypoint_map");
 }
예제 #30
0
 public abstract void AppendMangledName(NameMangler nameMangler, Utf8StringBuilder sb);
예제 #31
0
 public void AppendMangledName(NameMangler nameMangler, Utf8StringBuilder sb)
 {
     sb.Append("__fatpointer_").Append(NodeFactory.NameMangler.GetMangledMethodName(Method));
 }
예제 #32
0
 public override void AppendMangledName(NameMangler nameMangler, Utf8StringBuilder sb)
 {
     sb.Append("TypeHandle_");
     sb.Append(nameMangler.GetMangledTypeName(_type));
 }
예제 #33
0
 public void AppendMangledName(NameMangler nameMangler, Utf8StringBuilder sb)
 {
     sb.Append(nameMangler.CompilationUnitPrefix).Append("__embedded_metadata");
 }
예제 #34
0
 public override void AppendMangledName(NameMangler nameMangler, Utf8StringBuilder sb)
 {
     sb.Append("MethodHandle_");
     sb.Append(nameMangler.GetMangledMethodName(_method));
 }
예제 #35
0
 public override string GetMangledName(NameMangler nameMangler)
 {
     return $"TypeHandle_{nameMangler.GetMangledTypeName(_type)}";
 }
예제 #36
0
 public void AppendMangledName(NameMangler nameMangler, Utf8StringBuilder sb)
 {
     sb.Append(_name);
 }
예제 #37
0
 public override string GetMangledName(NameMangler nameMangler)
 {
     return $"VirtualCall_{nameMangler.GetMangledMethodName(_method)}";
 }
예제 #38
0
 public override void AppendMangledName(NameMangler nameMangler, Utf8StringBuilder sb)
 {
     sb.Append(nameMangler.CompilationUnitPrefix);
     sb.Append($@"TypeFixupSignature({_fixupKind.ToString()}): ");
     sb.Append(nameMangler.GetMangledTypeName(_typeDesc));
 }
예제 #39
0
 public void AppendMangledName(NameMangler nameMangler, Utf8StringBuilder sb)
 {
     sb.Append(NodeFactory.NameMangler.GetMangledMethodName(_method));
 }
예제 #40
0
 public override void AppendMangledName(NameMangler nameMangler, Utf8StringBuilder sb)
 {
     sb.Append(nameMangler.CompilationUnitPrefix);
     sb.Append("__ReadyToRunAssemblyTable");
 }
예제 #41
0
 public override void AppendMangledName(NameMangler nameMangler, Utf8StringBuilder sb)
 {
     sb.Append("TypeHandle_");
     sb.Append(nameMangler.GetMangledTypeName(_type));
 }
예제 #42
0
 public abstract void AppendMangledName(NameMangler nameMangler, Utf8StringBuilder sb);
예제 #43
0
 public void AppendMangledName(NameMangler nameMangler, Utf8StringBuilder sb)
 {
     sb.Append(NodeFactory.CompilationUnitPrefix);
     sb.Append("__ReadyToRunHeader");
 }
예제 #44
0
 public void AppendMangledName(NameMangler nameMangler, Utf8StringBuilder sb)
 {
     sb.Append("__GCStaticBase_").Append(NodeFactory.NameMangler.GetMangledTypeName(_type));
 }
예제 #45
0
 public static string GetMangledName(TypeDesc type, NameMangler nameMangler)
 {
     return(nameMangler.NodeMangler.NonGCStatics(type));
 }
예제 #46
0
 public void AppendMangledName(NameMangler nameMangler, Utf8StringBuilder sb)
 {
     sb.Append("__mrt__").Append(nameMangler.CompilationUnitPrefix).Append(GetNonImportedName(nameMangler));
 }
예제 #47
0
 public override void AppendMangledName(NameMangler nameMangler, Utf8StringBuilder sb)
 {
     sb.Append(MangledNamePrefix).Append(NodeFactory.NameMangler.GetMangledTypeName(_owningType));
 }
예제 #48
0
 public void AppendMangledName(NameMangler nameMangler, Utf8StringBuilder sb)
 {
     sb.Append(nameMangler.NodeMangler.NonGCStatics(_type));
 }
예제 #49
0
 public void AppendMangledName(NameMangler nameMangler, Utf8StringBuilder sb)
 {
     sb.Append(nameMangler.CompilationUnitPrefix).Append("__type_to_cctorContext_map");
 }
예제 #50
0
 public void AppendMangledName(NameMangler nameMangler, Utf8StringBuilder sb)
 {
     sb.Append(nameMangler.CompilationUnitPrefix);
     sb.Append($"__DebugDirectory_{_module.Assembly.GetName().Name}");
 }
예제 #51
0
 public void AppendMangledName(NameMangler nameMangler, Utf8StringBuilder sb)
 {
     sb.Append(nameMangler.CompilationUnitPrefix).Append("__array_type_map");
 }
예제 #52
0
 public void AppendMangledName(NameMangler nameMangler, Utf8StringBuilder sb)
 {
     sb.Append(nameMangler.CompilationUnitPrefix).Append("__generic_methods_hashtable");
 }
예제 #53
0
 public void AppendMangledName(NameMangler nameMangler, Utf8StringBuilder sb)
 {
     sb.Append("__nativemodule_");
     sb.Append(_moduleName);
 }
예제 #54
0
 public override void AppendMangledName(NameMangler nameMangler, Utf8StringBuilder sb)
 {
     sb.Append("unbox_").Append(nameMangler.GetMangledMethodName(_target));
 }
예제 #55
0
 public virtual void AppendMangledName(NameMangler nameMangler, Utf8StringBuilder sb)
 {
     sb.Append("__EEType_").Append(nameMangler.GetMangledTypeName(_type));
 }
예제 #56
0
 public virtual void AppendMangledName(NameMangler nameMangler, Utf8StringBuilder sb)
 {
     sb.Append(nameMangler.GetMangledMethodName(_method));
 }
 public void AppendMangledName(NameMangler nameMangler, Utf8StringBuilder sb)
 {
     sb.Append(nameMangler.CompilationUnitPrefix).Append("__type_to_metadata_map");
 }
예제 #58
0
 //
 // A cloned type must be named differently than the type it is a clone of so the linker
 // will have an unambiguous symbol to resolve
 //
 public override void AppendMangledName(NameMangler nameMangler, Utf8StringBuilder sb)
 {
     sb.Append("__Cloned_EEType_").Append(nameMangler.GetMangledTypeName(_type));
 }
예제 #59
0
 public void AppendMangledName(NameMangler nameMangler, Utf8StringBuilder sb)
 {
     sb.Append("__GCStaticEEType_").Append(_gcMap.ToString());
 }
 public void AppendMangledName(NameMangler nameMangler, Utf8StringBuilder sb)
 {
     _methodSymbol.AppendMangledName(nameMangler, sb);
 }