예제 #1
0
        public void LoadFunction(ContextFreeModule contextFreeModule)
        {
            Module functionModule = _contextWrapper.LoadContextFreeModule(contextFreeModule);

            functionModule.VerifyAndThrowIfInvalid();
            _globalModule.LinkInModule(functionModule.Clone());
        }
예제 #2
0
        public ExecutionContext(IRebarTargetRuntimeServices runtimeServices)
        {
            _contextWrapper  = new ContextWrapper();
            _runtimeServices = runtimeServices;
            _globalModule    = _contextWrapper.CreateModule("global");
            foreach (ContextFreeModule module in new[]
            {
                CommonModules.FakeDropModule,
                CommonModules.SchedulerModule,
                CommonModules.StringModule,
                CommonModules.OutputModule,
                CommonModules.RangeModule,
                CommonModules.FileModule
            })
            {
                _globalModule.LinkInModule(_contextWrapper.LoadContextFreeModule(module));
            }

            _engine     = _globalModule.CreateMCJITCompilerForModule();
            _targetData = LLVMSharp.LLVM.GetExecutionEngineTargetData(_engine);
        }