Changeset 3336 for proto


Ignore:
Timestamp:
Jun 19, 2013, 10:27:52 PM (6 years ago)
Author:
ksherdy
Message:

Minor renames.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • proto/pabloj/trunk/src/toolchain/pabloS/transformer/visitors/carry/TempifyCarryBuiltinCalls.java

    r3330 r3336  
    55 * @author Ken Herdy <ksherdy at sfu dot ca>
    66 *
    7  * Case 1: 'assignment' or 'local variable declaration' statement
     7 * Case 1: 'assignment' statement
    88 *
    99 * returnValue = pablo.BUILTIN_CALL(args) 
     
    4444package toolchain.pabloS.transformer.visitors.carry;
    4545
    46 import java.util.ArrayList;
    4746import java.util.LinkedHashMap;
    4847import java.util.List;
     
    5554import toolchain.pabloS.lang.BuiltinCallUtil;
    5655import toolchain.util.Labeller;
     56import toolchain.util.Pair;
     57import static toolchain.util.MapUtil.*;
     58
    5759
    5860public class TempifyCarryBuiltinCalls {
     
    6971           
    7072            Labeller labeller;
    71             Map<ASTNode, List<ASTNode>> tempDeclsEnclBlockStmt;
     73            Map<ASTNode, List<ASTNode>> enclBlockStmtTempDecls;
    7274            Map<ASTNode, List<Pair<ASTNode, List<ASTNode>>>> tempDeclsInsertionChild;
    7375           
    74             Map<ASTNode, List<ASTNode>> tempAssignsEnclBlockStmt;
     76            Map<ASTNode, List<ASTNode>> enclBlockStmtTempAssigns;
    7577            Map<ASTNode, List<Pair<ASTNode, List<ASTNode>>>> tempAssignsInsertionChild;
    7678
     
    8082
    8183            public Tempifier(int nextValue) {
    82                 labeller = new Labeller();
    83                 labeller.setBase("__temp__");
     84                labeller = new Labeller("_temp");
    8485                labeller.setNextValue(nextValue);
    8586
    86             tempDeclsEnclBlockStmt = new LinkedHashMap<ASTNode, List<ASTNode>>();
    87             tempAssignsEnclBlockStmt = new LinkedHashMap<ASTNode, List<ASTNode>>();
     87            enclBlockStmtTempDecls = new LinkedHashMap<ASTNode, List<ASTNode>>();
     88            enclBlockStmtTempAssigns = new LinkedHashMap<ASTNode, List<ASTNode>>();
    8889               
    8990                tempDeclsInsertionChild = new LinkedHashMap<ASTNode, List<Pair<ASTNode, List<ASTNode>>>>();
     
    9798                labeller.reset();
    9899               
    99                 tempDeclsEnclBlockStmt.clear();
    100                 tempAssignsEnclBlockStmt.clear();
     100                enclBlockStmtTempDecls.clear();
     101                enclBlockStmtTempAssigns.clear();
    101102               
    102103                tempDeclsInsertionChild.clear();
     
    141142                IdentifierNode name              = Generators.makeIdentifierNode(locator, labeller.newLabel());
    142143                StreamTypeNode type              = Generators.makeStreamType(locator);
    143                 VarDeclNode localVarDecl         = Generators.makeVarDeclNode(locator, type, name.deepCopy());
     144                VarDeclNode varDecl              = Generators.makeVarDeclNode(locator, type, name.deepCopy());
    144145                AssignNode assignStmt            = Generators.makeAssignNode(locator, name.deepCopy(), node.deepCopy());
    145 
    146                 addValueToList(tempDeclsEnclBlockStmt, blockStmt, localVarDecl);
    147                 addValueToList(tempAssignsEnclBlockStmt, blockStmt, assignStmt);
     146               
     147                addValueToList(enclBlockStmtTempDecls, blockStmt, varDecl);
     148                addValueToList(enclBlockStmtTempAssigns, blockStmt, assignStmt);
    148149
    149150                node.updateSelf(name);               
     
    157158            BlockStmtNode whileBody    = Accessors.body(node);
    158159            BlockStmtNode blockStmt    = getEnclosingBlockStmt(node);
    159             if(tempAssignsEnclBlockStmt.containsKey(blockStmt)) {
    160                 for(ASTNode tempAssign : tempAssignsEnclBlockStmt.get(blockStmt)) {
     160            if(enclBlockStmtTempAssigns.containsKey(blockStmt)) {
     161                for(ASTNode tempAssign : enclBlockStmtTempAssigns.get(blockStmt)) {
    161162                    whileBody.appendChild(tempAssign);
    162163                }
     
    167168            BlockStmtNode whileBody    = Accessors.body(node);
    168169            BlockStmtNode blockStmt    = getEnclosingBlockStmt(node);
    169             if(tempDeclsEnclBlockStmt.containsKey(blockStmt)) {
    170                 for(ASTNode tempDecl : tempDeclsEnclBlockStmt.get(blockStmt)) {
     170            if(enclBlockStmtTempDecls.containsKey(blockStmt)) {
     171                for(ASTNode tempDecl : enclBlockStmtTempDecls.get(blockStmt)) {
    171172                    whileBody.appendChild(tempDecl);
    172173                }
     
    178179                List<Pair<ASTNode, List<ASTNode>>> pairs = tempAssignsInsertionChild.get(node);
    179180                for(Pair<ASTNode, List<ASTNode>> pair : pairs) {
    180                     for(ASTNode precessor : pair.right()) {
    181                         node.insertBeforeChild(pair.left(), precessor);   
     181                    for(ASTNode predecessor : pair.right()) {
     182                        node.insertBeforeChild(pair.left(), predecessor);
    182183                    }
    183184                }
     
    189190                List<Pair<ASTNode, List<ASTNode>>> pairs = tempDeclsInsertionChild.get(node);
    190191                for(Pair<ASTNode, List<ASTNode>> pair : pairs) {
    191                     for(ASTNode precessor : pair.right()) {
    192                         node.insertBeforeChild(pair.left(), precessor);   
     192                    for(ASTNode predecessor : pair.right()) {
     193                        node.insertBeforeChild(pair.left(), predecessor);
    193194                    }
    194195                }
     
    198199        private void bindTempAssignToBlockStmt(ASTNode node) {
    199200            BlockStmtNode blockStmt          = getEnclosingBlockStmt(node);
    200             if(tempAssignsEnclBlockStmt.containsKey(blockStmt)) {
    201                 addValueToList(tempAssignsInsertionChild, blockStmt, new Pair<ASTNode, List<ASTNode>>(node, tempAssignsEnclBlockStmt.get(blockStmt)));
    202                 tempAssignsEnclBlockStmt.remove(blockStmt);
     201            if(enclBlockStmtTempAssigns.containsKey(blockStmt)) {
     202                addValueToList(tempAssignsInsertionChild, blockStmt, new Pair<ASTNode, List<ASTNode>>(node, enclBlockStmtTempAssigns.get(blockStmt)));
     203                enclBlockStmtTempAssigns.remove(blockStmt);
    203204            }
    204205        }
     
    206207        private void bindTempDeclsToBlockStmt(ASTNode node) {
    207208            BlockStmtNode blockStmt          = getEnclosingBlockStmt(node);
    208             if(tempDeclsEnclBlockStmt.containsKey(blockStmt)) {
    209                 addValueToList(tempDeclsInsertionChild, blockStmt, new Pair<ASTNode, List<ASTNode>>(node, tempDeclsEnclBlockStmt.get(blockStmt)));
    210                 tempDeclsEnclBlockStmt.remove(blockStmt);
     209            if(enclBlockStmtTempDecls.containsKey(blockStmt)) {
     210                addValueToList(tempDeclsInsertionChild, blockStmt, new Pair<ASTNode, List<ASTNode>>(node, enclBlockStmtTempDecls.get(blockStmt)));
     211                enclBlockStmtTempDecls.remove(blockStmt);
    211212            }
    212213        }           
     
    229230                return NO_ENCLOSING_BLOCK_STMT;
    230231            }
    231            
    232         private <V, K> void addValueToList(Map<K, List<V>> map, K key, V value) {
    233             if(!map.containsKey(key)) {
    234                 map.put(key, new ArrayList<V>());
    235             }
    236             List<V> list = map.get(key);
    237             list.add(value);
    238         }
    239                
    240         private static class Pair<L,R> {
    241 
    242             private final L left;
    243             private final R right;
    244 
    245             public Pair(L left, R right) {
    246               this.left = left;
    247               this.right = right;
    248             }
    249 
    250             public L left() { return left; }
    251             public R right() { return right; }
    252         }
    253232    }
    254233}
     234
Note: See TracChangeset for help on using the changeset viewer.