kinman 2003/08/21 16:59:11 Modified: jasper2/src/share/org/apache/jasper/compiler Generator.java Log: - Don't generate code to do an instanceof when it can be done at translation. - Minor code cleanup in the codes generated for fragments. Revision Changes Path 1.199 +28 -33 jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/Generator.java Index: Generator.java =================================================================== RCS file: /home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/Generator.java,v retrieving revision 1.198 retrieving revision 1.199 diff -u -r1.198 -r1.199 --- Generator.java 20 Aug 2003 16:37:10 -0000 1.198 +++ Generator.java 21 Aug 2003 23:59:11 -0000 1.199 @@ -688,6 +688,7 @@ private Hashtable tagVarNumbers; private String parent; + private boolean isSimpleTagParent; // Is parent a SimpleTag? private String pushBodyCountVar; private String simpleTagHandlerVar; private boolean isSimpleTagHandler; @@ -1558,6 +1559,8 @@ // visit body String tmpParent = parent; parent = tagHandlerVar; + boolean isSimpleTagParentSave = isSimpleTagParent; + isSimpleTagParent = false; String tmpPushBodyCountVar = null; if (n.implementsTryCatchFinally()) { tmpPushBodyCountVar = pushBodyCountVar; @@ -1569,6 +1572,7 @@ visitBody(n); parent = tmpParent; + isSimpleTagParent = isSimpleTagParentSave; if (n.implementsTryCatchFinally()) { pushBodyCountVar = tmpPushBodyCountVar; } @@ -2540,30 +2544,21 @@ // Set parent if (!simpleTag) { + out.printin(tagHandlerVar); + out.print(".setParent("); if (parent != null) { - out.printin("if ("); - out.print(parent); - out.println(" instanceof javax.servlet.jsp.tagext.SimpleTag)"); - out.pushIndent(); - out.printin(tagHandlerVar); - out.print(".setParent("); - out.print("new javax.servlet.jsp.tagext.TagAdapter("); - out.print("(javax.servlet.jsp.tagext.SimpleTag) "); - out.print(parent); - out.println("));"); - out.popIndent(); - out.printil("else"); - out.pushIndent(); - out.printin(tagHandlerVar); - out.print(".setParent((javax.servlet.jsp.tagext.Tag) "); - out.print(parent); - out.println(");"); - out.popIndent(); + if (isSimpleTagParent) { + out.print("new javax.servlet.jsp.tagext.TagAdapter("); + out.print("(javax.servlet.jsp.tagext.SimpleTag) "); + out.print(parent); + out.println("));"); + } else { + out.print("(javax.servlet.jsp.tagext.Tag) "); + out.print(parent); + out.println(");"); + } } else { - out.printin(tagHandlerVar); - out.print(".setParent("); - out.print(parent); - out.println(");"); + out.println("null);"); } } else { // The setParent() method need not be called if the value being @@ -2718,12 +2713,15 @@ ServletWriter outSave = out; out = fragment.getGenBuffer().getOut(); String tmpParent = parent; - parent = tagHandlerVar; + parent = "_jspx_parent"; + boolean isSimpleTagParentSave = isSimpleTagParent; + isSimpleTagParent = true; boolean tmpIsFragment = isFragment; isFragment = true; visitBody( n ); out = outSave; parent = tmpParent; + isSimpleTagParent = isSimpleTagParentSave; isFragment = tmpIsFragment; fragmentHelperClass.closeFragment(fragment, methodNesting); // XXX - Need to change pageContext to jspContext if @@ -3534,14 +3532,14 @@ "org.apache.jasper.runtime.JspFragmentHelper" ); out.printil( "{" ); out.pushIndent(); - out.printil("private javax.servlet.jsp.tagext.JspTag parentTag;"); + out.printil("private javax.servlet.jsp.tagext.JspTag _jspx_parent;"); out.println(); out.printil( "public " + className + "( int discriminator, JspContext jspContext, " + - "javax.servlet.jsp.tagext.JspTag parentTag ) {" ); + "javax.servlet.jsp.tagext.JspTag _jspx_parent ) {" ); out.pushIndent(); - out.printil( "super( discriminator, jspContext, parentTag );" ); - out.printil( "this.parentTag = parentTag;" ); + out.printil( "super( discriminator, jspContext, _jspx_parent );" ); + out.printil( "this._jspx_parent = _jspx_parent;" ); out.popIndent(); out.printil( "}" ); } @@ -3577,9 +3575,6 @@ out.printil( "{" ); out.pushIndent(); generateLocalVariables( out, parent ); - out.printin("javax.servlet.jsp.tagext.JspTag "); - out.print(tagHandlerVar); - out.println(" = parentTag;"); return result; }
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]