private Evaluator createCompiler() { Evaluator result = null; if (optimizationLevel >= 0 && codegenClass != null) { result = (Evaluator)Kit.newInstanceOrNull(codegenClass); } if (result == null) { result = createInterpreter(); } return result; }
private String generateStackTrace() { // Get stable reference to work properly with concurrent access CharArrayWriter writer = new CharArrayWriter(); super.printStackTrace(new PrintWriter(writer)); String origStackTrace = writer.toString(); Evaluator e = Context.createInterpreter(); if (e != null) return e.getPatchedStack(this, origStackTrace); return null; }
/** * Calls {@link #setStackTrace(StackTraceElement[])} to claim * the stack trace that include scripts */ protected void overwriteStackTrace(Throwable target) { List<List<StackTraceElement>> interpreterStack; Evaluator interpreter = Context.createInterpreter(); if (interpreter != null) interpreterStack = interpreter.buildScriptStack(this); else interpreterStack = Collections.emptyList(); int interpreterStackIndex = 0; List<StackTraceElement> newStacks = new ArrayList<StackTraceElement>(); StackTraceElement[] stack = target.getStackTrace(); for (int i = 0; i < stack.length; i++) { StackTraceElement e = stack[i]; if (interpreterStack != null && "net.sourceforge.htmlunit.corejs.javascript.Interpreter".equals(e.getClassName()) && "interpretLoop".equals(e.getMethodName())) { newStacks.addAll(interpreterStack.get(interpreterStackIndex++)); } else { newStacks.add(e); } } target.setStackTrace(newStacks.toArray(new StackTraceElement[newStacks.size()])); }
RhinoException() { Evaluator e = Context.createInterpreter(); if (e != null) e.captureStackInfo(this); overwriteStackTrace(this); }
RhinoException(String details) { super(details); Evaluator e = Context.createInterpreter(); if (e != null) e.captureStackInfo(this); overwriteStackTrace(this); }
Evaluator interpreter = Context.createInterpreter(); if (interpreter != null) { interpreterStack = interpreter.getScriptStack(this);
return null; if (cx.lastInterpreterFrame != null) { Evaluator evaluator = createInterpreter(); if (evaluator != null) return evaluator.getSourcePositionFromStack(cx, linep);
reporter = DefaultErrorReporter.forEval(cx.getErrorReporter()); Evaluator evaluator = Context.createInterpreter(); if (evaluator == null) { throw new JavaScriptException("Interpreter not present",
reporter = DefaultErrorReporter.forEval(cx.getErrorReporter()); Evaluator evaluator = Context.createInterpreter(); if (evaluator == null) { throw new JavaScriptException("Interpreter not present",