Author: rvesse
Date: Wed Apr  9 13:50:34 2014
New Revision: 1585969

URL: http://svn.apache.org/r1585969
Log:
Try to avoid unecessary copies of expressions during constant folding (JENA-630)

Modified:
    
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/optimize/ExprTransformConstantFold.java

Modified: 
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/optimize/ExprTransformConstantFold.java
URL: 
http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/optimize/ExprTransformConstantFold.java?rev=1585969&r1=1585968&r2=1585969&view=diff
==============================================================================
--- 
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/optimize/ExprTransformConstantFold.java
 (original)
+++ 
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/algebra/optimize/ExprTransformConstantFold.java
 Wed Apr  9 13:50:34 2014
@@ -34,22 +34,34 @@ public class ExprTransformConstantFold e
 
     @Override
     public Expr transform(ExprFunction1 func, Expr expr1) {
-        return func.copySubstitute(this.b, true);
+        Expr transformed = func.copySubstitute(this.b, true);
+        if (transformed.equals(func))
+            return super.transform(func, expr1);
+        return transformed;
     }
 
     @Override
     public Expr transform(ExprFunction2 func, Expr expr1, Expr expr2) {
-        return func.copySubstitute(this.b, true);
+        Expr transformed = func.copySubstitute(this.b, true);
+        if (transformed.equals(func))
+            return super.transform(func, expr1, expr2);
+        return transformed;
     }
 
     @Override
     public Expr transform(ExprFunction3 func, Expr expr1, Expr expr2, Expr 
expr3) {
-        return func.copySubstitute(this.b, true);
+        Expr transformed = func.copySubstitute(this.b, true);
+        if (transformed.equals(func))
+            return super.transform(func, expr1, expr2, expr3);
+        return transformed;
     }
 
     @Override
     public Expr transform(ExprFunctionN func, ExprList args) {
-        return func.copySubstitute(this.b, true);
+        Expr transformed = func.copySubstitute(this.b, true);
+        if (transformed.equals(func))
+            return super.transform(func, args);
+        return transformed;
     }
 
     @Override


Reply via email to