[prev in list] [next in list] [prev in thread] [next in thread] 

List:       xalan-cvs
Subject:    cvs commit: xml-xalan/java/src/org/apache/xalan/xsltc/compiler Variable.java
From:       zongaro () apache ! org
Date:       2004-09-24 22:18:57
Message-ID: 20040924221857.1349.qmail () minotaur ! apache ! org
[Download RAW message or body]

zongaro     2004/09/24 15:18:57

  Modified:    java/src/org/apache/xalan/xsltc/compiler Variable.java
  Log:
  Skip translation for any unreferenced variables.
  
  Patch reviewed by Christine Li (jycli@ca.ibm.com).
  
  Revision  Changes    Path
  1.28      +11 -17    xml-xalan/java/src/org/apache/xalan/xsltc/compiler/Variable.java
  
  Index: Variable.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/Variable.java,v
  retrieving revision 1.27
  retrieving revision 1.28
  diff -u -r1.27 -r1.28
  --- Variable.java	24 Feb 2004 02:58:42 -0000	1.27
  +++ Variable.java	24 Sep 2004 22:18:56 -0000	1.28
  @@ -36,13 +36,6 @@
   import org.apache.xalan.xsltc.compiler.util.Type;
   import org.apache.xalan.xsltc.compiler.util.TypeCheckError;
   
  -/**
  - * @author Jacek Ambroziak
  - * @author Santiago Pericas-Geertsen
  - * @author Morten Jorgensen
  - * @author Erwin Bolwidt <ejb@klomp.org>
  - * @author John Howard <JohnH@schemasoft.com>
  - */
   final class Variable extends VariableBase {
   
       public int getIndex() {
  @@ -148,25 +141,26 @@
   	final ConstantPoolGen cpg = classGen.getConstantPool();
   	final InstructionList il = methodGen.getInstructionList();
   
  -	final String name = getEscapedName();
  +        // Don't generate code for unreferenced variables
  +        if (_refs.isEmpty()) {
  +            _ignore = true;
  +        }
   
   	// Make sure that a variable instance is only compiled once
   	if (_ignore) return;
   	_ignore = true;
   
  +	final String name = getEscapedName();
  +
   	if (isLocal()) {
   	    // Compile variable value computation
   	    translateValue(classGen, methodGen);
   
   	    // Add a new local variable and store value
  -	    if (_refs.isEmpty()) { // Remove it if nobody uses the value
  -		il.append(_type.POP());
  -		_local = null;
  -	    }
  -	    else {		   // Store in local var slot if referenced
  -		if (_local == null) mapRegister(methodGen);
  -		il.append(_type.STORE(_local.getIndex()));
  -	    }
  +	    if (_local == null) {
  +                mapRegister(methodGen);
  +            }
  +	    il.append(_type.STORE(_local.getIndex()));
   	}
   	else {
   	    String signature = _type.toSignature();
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: xalan-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xalan-cvs-help@xml.apache.org

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic