Repository: systemml
Updated Branches:
  refs/heads/master a640e57b0 -> 3d5dbe429


[SYSTEMML-2153] Fix robustness parfor check for block partitioning

This patch fixes the robustness of the parfor optimizer (for validating
a potential input block partitioning) and dependency analysis with
regard to null variable names in index expressions.


Project: http://git-wip-us.apache.org/repos/asf/systemml/repo
Commit: http://git-wip-us.apache.org/repos/asf/systemml/commit/3d5dbe42
Tree: http://git-wip-us.apache.org/repos/asf/systemml/tree/3d5dbe42
Diff: http://git-wip-us.apache.org/repos/asf/systemml/diff/3d5dbe42

Branch: refs/heads/master
Commit: 3d5dbe42979004fec95cdf01fd63bd065a7ccc99
Parents: a640e57
Author: Matthias Boehm <[email protected]>
Authored: Fri Feb 16 20:00:36 2018 -0800
Committer: Matthias Boehm <[email protected]>
Committed: Fri Feb 16 20:00:36 2018 -0800

----------------------------------------------------------------------
 .../java/org/apache/sysml/parser/ParForStatementBlock.java  | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/systemml/blob/3d5dbe42/src/main/java/org/apache/sysml/parser/ParForStatementBlock.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/parser/ParForStatementBlock.java 
b/src/main/java/org/apache/sysml/parser/ParForStatementBlock.java
index cc33352..d209c36 100644
--- a/src/main/java/org/apache/sysml/parser/ParForStatementBlock.java
+++ b/src/main/java/org/apache/sysml/parser/ParForStatementBlock.java
@@ -1956,9 +1956,12 @@ public class ParForStatementBlock extends 
ForStatementBlock
                        boolean ret = ( _b.length == f2._b.length );
                        for( int i=0; i<_b.length && ret; i++ ) {
                                ret &= (_b[i] == f2._b[i] );
-                               ret &= (_vars[i].equals(f2._vars[i])
-                                       
||(_vars[i].startsWith(INTERAL_FN_INDEX_ROW) && 
f2._vars[i].startsWith(INTERAL_FN_INDEX_ROW))
-                                       
||(_vars[i].startsWith(INTERAL_FN_INDEX_COL) && 
f2._vars[i].startsWith(INTERAL_FN_INDEX_COL)) )  ;
+                               //note robustness for null var names 
+                               String var1 = String.valueOf(_vars[i]);
+                               String var2 = String.valueOf(f2._vars[i]);
+                               ret &= (var1.equals(var2)
+                                       
||(var1.startsWith(INTERAL_FN_INDEX_ROW) && 
var2.startsWith(INTERAL_FN_INDEX_ROW))
+                                       
||(var1.startsWith(INTERAL_FN_INDEX_COL) && 
var2.startsWith(INTERAL_FN_INDEX_COL)));
                        }
                        return ret;
                }

Reply via email to