geirm       01/04/18 13:54:34

  Modified:    src/java/org/apache/velocity/runtime/parser/node
                        ASTReference.java
  Log:
  More inefficiency banished to the netherworld...
  
  The number of children is constant, and so is the 'firstToken' stuff
  
  Revision  Changes    Path
  1.26      +15 -12    
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.25
  retrieving revision 1.26
  diff -u -r1.25 -r1.26
  --- ASTReference.java 2001/04/18 20:43:15     1.25
  +++ ASTReference.java 2001/04/18 20:54:32     1.26
  @@ -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.25 2001/04/18 20:43:15 geirm Exp $ 
  + * @version $Id: ASTReference.java,v 1.26 2001/04/18 20:54:32 geirm Exp $ 
   */
   public class ASTReference extends SimpleNode
   {
  @@ -95,7 +95,10 @@
       private boolean escaped = false;
       private boolean computableReference = true;
       private String  prefix = "";
  +    private String firstToken = "";
   
  +    private int numChildren = 0;
  +
       public ASTReference(int id)
       {
           super(id);
  @@ -128,6 +131,8 @@
   
           rootString = getRoot();
   
  +        numChildren = jjtGetNumChildren();
  +        firstToken = NodeUtils.specialText( getFirstToken() );
           return data;
       }        
       
  @@ -163,12 +168,10 @@
            * when we find a null value and return the null
            * so the error gets logged.
            */
  -
  -        int children = jjtGetNumChildren();
           
           try 
           {
  -            for (int i = 0; i < children; i++)
  +            for (int i = 0; i < numChildren; i++)
               {
                   result = jjtGetChild(i).execute(result,context);
               
  @@ -218,14 +221,14 @@
           {
               if ( value == null )
               {
  -                writer.write( NodeUtils.specialText(getFirstToken()));
  +                writer.write( firstToken );
                   writer.write( prefix );
                   writer.write( "\\" );
                   writer.write( nullString );
               }
               else
               {
  -                writer.write( NodeUtils.specialText(getFirstToken()) );
  +                writer.write( firstToken );
                   writer.write( prefix );
                   writer.write( nullString );
               }
  @@ -243,7 +246,7 @@
                *  write prefix twice, because it's shmoo, so the \ don't escape each 
other...
                */
               
  -            writer.write( NodeUtils.specialText(getFirstToken()) );
  +            writer.write( firstToken );
               writer.write( prefix );
               writer.write( prefix );
               writer.write( nullString );
  @@ -257,7 +260,7 @@
           }                    
           else
           {
  -            writer.write( NodeUtils.specialText(getFirstToken()) );
  +            writer.write( firstToken );
               writer.write( prefix );
               writer.write( value.toString() );
           }                    
  @@ -278,7 +281,9 @@
           Object value = execute(null, context);
           
           if (value == null)
  +        {
               return false;
  +        }
           else if (value instanceof Boolean)
           {
               if (((Boolean) value).booleanValue())
  @@ -326,10 +331,8 @@
           /*
            * How many child nodes do we have?
            */
  -
  -        int children = jjtGetNumChildren();
   
  -        for (int i = 0; i < children - 1; i++)
  +        for (int i = 0; i < numChildren - 1; i++)
           {
               result = jjtGetChild(i).execute(result, context);
               
  @@ -346,7 +349,7 @@
            *  2) ref,put("foo", value ) to parallel the get() map introspection
            */
   
  -        String identifier = jjtGetChild(children - 1).getFirstToken().image;
  +        String identifier = jjtGetChild(numChildren - 1).getFirstToken().image;
   
           try
           {
  
  
  

Reply via email to