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