public QuercusPage parseImpl(Path path, string fileName, int line) { try { SoftReference <QuercusProgram> programRef = _programCache.get(path); QuercusProgram program = programRef != null?programRef.get() : null; bool isModified = false; if (program != null) { isModified = program.isModified(); if (program.isCompilable()) { } else if (isModified) { program.setCompilable(true); } else { if (log.isLoggable(Level.FINE)) { log.fine(L.l("Quercus[{0}] loading interpreted page", path)); } return(new InterpretedPage(program)); } } if (program == null || isModified) { clearProgram(path, program); program = preloadProgram(path, fileName); if (program == null) { if (log.isLoggable(Level.FINE)) { log.fine(L.l("Quercus[{0}] parsing page", path)); } program = QuercusParser.parse(_quercus, path, _quercus.getScriptEncoding(), fileName, line); } _programCache.put(path, new SoftReference <QuercusProgram>(program)); } if (program.getCompiledPage() != null) { return(program.getCompiledPage()); } return(compilePage(program, path)); } catch (IOException e) { throw e; } catch (RuntimeException e) { throw e; } catch (Throwable e) { throw new IOExceptionWrapper(e); } }
/** * Returns any profile page. */ public override QuercusPage getCompiledPage() { return(_program.getCompiledPage()); }