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]

Reply via email to