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]