public override ModuleLoadOptions GetModuleLoadOptions(DnModule module)
        {
            ModuleLoadOptions options = default;

            bool suppressJITOptimization;

            if (IsProgramModule(module))
            {
                suppressJITOptimization = suppressJITOptimization_ProgramModules;
            }
            else
            {
                suppressJITOptimization = suppressJITOptimization_SystemModules;
            }

            if (suppressJITOptimization)
            {
                options.JITCompilerFlags            = CorDebugJITCompilerFlags.CORDEBUG_JIT_DISABLE_OPTIMIZATION;
                options.ModuleTrackJITInfo          = true;
                options.ModuleAllowJitOptimizations = false;
            }
            else
            {
                options.JITCompilerFlags            = CorDebugJITCompilerFlags.CORDEBUG_JIT_DEFAULT;
                options.ModuleTrackJITInfo          = false;
                options.ModuleAllowJitOptimizations = true;
            }

            options.JustMyCode = IsJustMyCode(module);

            return(options);
        }
        private void InitializeContent(string content, ModuleLoadOptions newOptions)
        {
            lock (AnalysisLock) {
                if (!_loaded)
                {
                    if (!newOptions.ShouldLoad())
                    {
                        return;
                    }
                    content = content ?? LoadContent(newOptions);
                    _buffer.Reset(0, content);
                    _loaded = true;
                }

                IsOpen     = (newOptions & ModuleLoadOptions.Open) == ModuleLoadOptions.Open;
                newOptions = newOptions | (IsOpen ? ModuleLoadOptions.Analyze : 0);

                var change        = (_options ^ newOptions);
                var startAnalysis = change.ShouldAnalyze() && _analysisTcs?.Task == null;
                var startParse    = change.ShouldParse() && _parsingTask == null;

                _options = newOptions;

                if (startAnalysis)
                {
                    _analysisTcs = new TaskCompletionSource <IDocumentAnalysis>();
                }

                if (startParse)
                {
                    Parse();
                }
            }
        }
 protected virtual string LoadContent(ModuleLoadOptions options)
 {
     if (options.ShouldLoad() && ModuleType != ModuleType.Unresolved)
     {
         return(FileSystem.ReadAllText(FilePath));
     }
     return(null); // Keep content as null so module can be loaded later.
 }
 private IDocument OpenDocument(IDocument document, ModuleLoadOptions options)
 {
     if ((options & ModuleLoadOptions.Open) == ModuleLoadOptions.Open)
     {
         document.IsOpen = true;
         Opened?.Invoke(this, new DocumentEventArgs(document));
     }
     return(document);
 }
Exemple #5
0
 protected override string LoadContent(ModuleLoadOptions options)
 {
     try {
         if (FileSystem.FileExists(FilePath))
         {
             return(FileSystem.ReadAllText(FilePath));
         }
     } catch (IOException) { } catch (UnauthorizedAccessException) { }
     return(string.Empty);
 }
        protected override string LoadContent(ModuleLoadOptions options)
        {
            var code = string.Empty;

            if ((options & ModuleLoadOptions.Load) == ModuleLoadOptions.Load)
            {
                code = ModuleCache.ReadCachedModule(FilePath);
                if (string.IsNullOrEmpty(code))
                {
                    if (!FileSystem.FileExists(Interpreter.Configuration.InterpreterPath))
                    {
                        return(string.Empty);
                    }

                    code = ScrapeModule();
                    SaveCachedCode(code);
                }
            }
            return(code);
        }
 public static bool ShouldAnalyze(this ModuleLoadOptions o)
 => (o & ModuleLoadOptions.Analyze) == ModuleLoadOptions.Analyze;
 public static bool ShouldParse(this ModuleLoadOptions o)
 => (o & ModuleLoadOptions.Ast) == ModuleLoadOptions.Ast;
 public static bool ShouldLoad(this ModuleLoadOptions o)
 => (o & ModuleLoadOptions.Load) == ModuleLoadOptions.Load;
Exemple #10
0
 public MappedModuleEx_LunarUNFINISHED(ProcessEx hostProcess, Memory <byte> moduleData, ModuleLoadOptions loadOptions)
 {
     HostProcess = hostProcess;
     RawDLL      = moduleData;
     MLO         = loadOptions;
 }
 public CompiledPythonModule(string moduleName, ModuleType moduleType, string filePath, IPythonModule stub,
                             IServiceContainer services, ModuleLoadOptions options = ModuleLoadOptions.Analyze)
     : base(moduleName, filePath, moduleType, options, stub, services)
 {
 }
 protected PythonModule(string moduleName, string filePath, ModuleType moduleType, ModuleLoadOptions loadOptions, IPythonModule stub, IServiceContainer services) :
     this(new ModuleCreationOptions {
     ModuleName = moduleName,
     FilePath = filePath,
     ModuleType = moduleType,
     Stub = stub,
     LoadOptions = loadOptions
 }, services)
 {
 }