Remy,
I like this much better! No private API used, and cleaner generated
codes!
Some nitpicks! :-) See below.
There seems to be no need for a JspxState object anymore.
Jspx.State.tagCount is really not used, and JspxState.out can be
make local. I should just comment that out for now.
> remm 2002/06/10 20:35:35
>
> Modified: jasper2/src/share/org/apache/jasper/compiler Generator.java
> jasper2/src/share/org/apache/jasper/runtime
> PageContextImpl.java
> Log:
> - Take advantage of the fact that the PageContext is pooled.
> - Modify the way the buffer reuse is done to conform with the PageContext
> contract (basically, the code moves from the generated servlet to
PageContext).
>
> Index: Generator.java
> ===================================================================
> RCS file:
/home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/Gen
erator.java,v
> + out.printil("javax.servlet.jsp.tagext.BodyContent _bc =
pageContext.pushBody();");
> + out.printil("_bc.clear();");
> + out.printil("out = _bc;");
>
Can call to clear() be moved to pushBody()?
> Index: PageContextImpl.java
> ===================================================================
> RCS file:
/home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/runtime/Page
ContextImpl.java,v
> + protected BodyContent[] outs = new BodyContentImpl[0];
Why not start the array with a small fixed size, say 5, to avoid all
these copying.
> + protected int depth = -1;
>
> public BodyContent pushBody() {
> - JspWriter previous = out;
> - writerStack.push(out);
> - out = new BodyContentImpl(previous);
> - return (BodyContent) out;
> + depth++;
> + if (depth >= outs.length) {
> + BodyContent[] newOuts = new BodyContentImpl[depth + 1];
> + for (int i = 0; i < outs.length; i++) {
> + newOuts[i] = outs[i];
> + }
> + newOuts[depth] = new BodyContentImpl(out);
> + outs = newOuts;
> + }
> + out = outs[depth];
> + return outs[depth];
> }
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>