*/
public QuercusPage parse(Path path, String fileName, int line)
throws IOException
{
try {
QuercusProgram program;
program = _programCache.get(path);
boolean isModified = false;
if (program != null && _isAutoreloadingEnabled) {
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) {
program = QuercusParser.parse(_quercus,
path,
_quercus.getScriptEncoding(),
fileName,
line);
}
_programCache.put(path, program);
}
if (program.getCompiledPage() != null)
return program.getCompiledPage();
return compilePage(program, path);
} catch (IOException e) {
throw e;
} catch (RuntimeException e) {