geirm       01/04/18 14:00:44

  Modified:    src/java/org/apache/velocity/runtime/parser/node
                        ASTReference.java
  Log:
  even more optimization fun.  Pulling together as many immutables as possible
  I think this is right...
  
  Revision  Changes    Path
  1.27      +26 -14    
jakarta-velocity/src/java/org/apache/velocity/runtime/parser/node/ASTReference.java
  
  Index: ASTReference.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-velocity/src/java/org/apache/velocity/runtime/parser/node/ASTReference.java,v
  retrieving revision 1.26
  retrieving revision 1.27
  diff -u -r1.26 -r1.27
  --- ASTReference.java 2001/04/18 20:54:32     1.26
  +++ ASTReference.java 2001/04/18 21:00:44     1.27
  @@ -80,7 +80,7 @@
    * @author <a href="mailto:[EMAIL PROTECTED]">Geir Magnusson Jr.</a>
    * @author <a href="mailto:[EMAIL PROTECTED]">Christoph Reck</a>
    * @author <a href="mailto:[EMAIL PROTECTED]>Kent Johnson</a>
  - * @version $Id: ASTReference.java,v 1.26 2001/04/18 20:54:32 geirm Exp $ 
  + * @version $Id: ASTReference.java,v 1.27 2001/04/18 21:00:44 geirm Exp $ 
   */
   public class ASTReference extends SimpleNode
   {
  @@ -95,7 +95,8 @@
       private boolean escaped = false;
       private boolean computableReference = true;
       private String  prefix = "";
  -    private String firstToken = "";
  +    private String firstTokenPrefix = "";
  +    private String identifier = "";
   
       private int numChildren = 0;
   
  @@ -115,7 +116,8 @@
           return visitor.visit(this, data);
       }
   
  -    public Object init( InternalContextAdapter context, Object data) throws 
Exception
  +    public Object init( InternalContextAdapter context, Object data) 
  +        throws Exception
       {
           /*
            *  init our children
  @@ -132,7 +134,23 @@
           rootString = getRoot();
   
           numChildren = jjtGetNumChildren();
  -        firstToken = NodeUtils.specialText( getFirstToken() );
  +
  +        /*
  +         *  we can glom these together.. both are template immutables...
  +         */
  +
  +        String firstToken = NodeUtils.specialText( getFirstToken() );
  +        firstTokenPrefix = firstToken + prefix;
  +
  +        /*
  +         * and if appropriate...
  +         */
  +
  +        if (numChildren > 0 )
  +        {
  +            identifier = jjtGetChild(numChildren - 1).getFirstToken().image;
  +        }
  +
           return data;
       }        
       
  @@ -221,15 +239,13 @@
           {
               if ( value == null )
               {
  -                writer.write( firstToken );
  -                writer.write( prefix );
  +                writer.write( firstTokenPrefix );
                   writer.write( "\\" );
                   writer.write( nullString );
               }
               else
               {
  -                writer.write( firstToken );
  -                writer.write( prefix );
  +                writer.write( firstTokenPrefix );
                   writer.write( nullString );
               }
           
  @@ -246,9 +262,8 @@
                *  write prefix twice, because it's shmoo, so the \ don't escape each 
other...
                */
               
  -            writer.write( firstToken );
  +            writer.write( firstTokenPrefix );
               writer.write( prefix );
  -            writer.write( prefix );
               writer.write( nullString );
   
               if (referenceType != QUIET_REFERENCE 
  @@ -260,8 +275,7 @@
           }                    
           else
           {
  -            writer.write( firstToken );
  -            writer.write( prefix );
  +            writer.write( firstTokenPrefix );
               writer.write( value.toString() );
           }                    
       
  @@ -348,8 +362,6 @@
            *  1) ref.setFoo( value )
            *  2) ref,put("foo", value ) to parallel the get() map introspection
            */
  -
  -        String identifier = jjtGetChild(numChildren - 1).getFirstToken().image;
   
           try
           {
  
  
  

Reply via email to