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); }
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;
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) { }