private object Run(CodeContext codeContext, bool tryEvaluate) { codeContext.ModuleContext.CompilerContext = _compilerContext; _languageContext.ModuleContextEntering(codeContext.ModuleContext); #if FULL bool doEvaluation = tryEvaluate || _languageContext.Engine.Options.InterpretedMode; if (_simpleTarget == null && _optimizedTarget == null && doEvaluation && Ast.InterpretChecker.CanEvaluate(CodeBlock, _languageContext.Engine.Options.ProfileDrivenCompilation)) { return(CodeBlock.TopLevelExecute(codeContext)); } #endif if (_optimizedScope != null) { // flag on scope - "IsOptimized"? // TODO: why do we create a code context here? // get rid of block? return(_optimizedTarget(new CodeContext(_optimizedScope, _languageContext, codeContext.ModuleContext))); } EnsureCompiled(); CodeGen._codeBlockImplementations.Clear(); _code = null; return(_simpleTarget(codeContext)); }
private object Run(CodeContext codeContext, bool tryEvaluate) { codeContext.ModuleContext.CompilerContext = _compilerContext; _languageContext.ModuleContextEntering(codeContext.ModuleContext); if (_optimizedScope != null) { // flag on scope - "IsOptimized"? // TODO: why do we create a code context here? // get rid of block? return(_optimizedTarget(new CodeContext(_optimizedScope, _languageContext, codeContext.ModuleContext))); } EnsureCompiled(); CodeGen._codeBlockImplementations.Clear(); _code = null; return(_simpleTarget(codeContext)); }