public override ICompilation ToCompilation()
        {
            WebAssemblyCodegenNodeFactory        factory = new WebAssemblyCodegenNodeFactory(_context, _compilationGroup, _metadataManager, _interopStubManager, _nameMangler, _vtableSliceProvider, _dictionaryLayoutProvider);
            DependencyAnalyzerBase <NodeFactory> graph   = CreateDependencyGraph(factory, new ObjectNode.ObjectNodeComparer(new CompilerComparer()));

            return(new WebAssemblyCodegenCompilation(graph, factory, _compilationRoots, _ilProvider, _debugInformationProvider, _logger, _config));
        }
        internal WebAssemblyCodegenCompilation(
            DependencyAnalyzerBase <NodeFactory> dependencyGraph,
            WebAssemblyCodegenNodeFactory nodeFactory,
            IEnumerable <ICompilationRootProvider> roots,
            ILProvider ilProvider,
            DebugInformationProvider debugInformationProvider,
            Logger logger,
            WebAssemblyCodegenConfigProvider options)
            : base(dependencyGraph, nodeFactory, GetCompilationRoots(roots, nodeFactory), ilProvider, debugInformationProvider, null, logger)
        {
            NodeFactory = nodeFactory;
            LLVMModuleRef m = LLVMModuleRef.CreateWithName("netscripten");

            m.Target = "wasm32-unknown-unknown-wasm";
            // https://llvm.org/docs/LangRef.html#langref-datalayout
            // e litte endian, mangled names
            // m:e ELF mangling
            // p:32:32 pointer size 32, abi 32
            // i64:64 64 ints aligned 64
            // n:32:64 native widths
            // S128 natural alignment of stack
            m.DataLayout = "e-m:e-p:32:32-i64:64-n32:64-S128";
            Module       = m;

            Options          = options;
            DIBuilder        = Module.CreateDIBuilder();
            DebugMetadataMap = new Dictionary <string, DebugMetadata>();
        }
        public override ICompilation ToCompilation()
        {
            var interopStubManager = new CompilerGeneratedInteropStubManager(_compilationGroup, _context, new InteropStateManager(_compilationGroup.GeneratedAssembly));
            WebAssemblyCodegenNodeFactory        factory = new WebAssemblyCodegenNodeFactory(_context, _compilationGroup, _metadataManager, interopStubManager, _nameMangler, _vtableSliceProvider, _dictionaryLayoutProvider);
            DependencyAnalyzerBase <NodeFactory> graph   = CreateDependencyGraph(factory);

            return(new WebAssemblyCodegenCompilation(graph, factory, _compilationRoots, _logger, _config));
        }
示例#4
0
 internal WebAssemblyCodegenCompilation(
     DependencyAnalyzerBase <NodeFactory> dependencyGraph,
     WebAssemblyCodegenNodeFactory nodeFactory,
     IEnumerable <ICompilationRootProvider> roots,
     Logger logger,
     WebAssemblyCodegenConfigProvider options)
     : base(dependencyGraph, nodeFactory, GetCompilationRoots(roots, nodeFactory), null, null, logger)
 {
     NodeFactory = nodeFactory;
     Module      = LLVM.ModuleCreateWithName("netscripten");
     LLVM.SetTarget(Module, "asmjs-unknown-emscripten");
     Options = options;
 }
示例#5
0
 internal WebAssemblyCodegenCompilation(
     DependencyAnalyzerBase <NodeFactory> dependencyGraph,
     WebAssemblyCodegenNodeFactory nodeFactory,
     IEnumerable <ICompilationRootProvider> roots,
     DebugInformationProvider debugInformationProvider,
     Logger logger,
     WebAssemblyCodegenConfigProvider options)
     : base(dependencyGraph, nodeFactory, GetCompilationRoots(roots, nodeFactory), debugInformationProvider, null, logger)
 {
     NodeFactory = nodeFactory;
     Module      = LLVM.ModuleCreateWithName("netscripten");
     LLVM.SetTarget(Module, "asmjs-unknown-emscripten");
     Options          = options;
     DIBuilder        = LLVMPInvokes.LLVMCreateDIBuilder(Module);
     DebugMetadataMap = new Dictionary <string, DebugMetadata>();
 }