Changeset 3287 for proto


Ignore:
Timestamp:
Jun 7, 2013, 6:07:40 PM (6 years ago)
Author:
ksherdy
Message:

Partial impl for TempifyBuiltins?.

Location:
proto/pabloj/trunk/src/toolchain/pabloS/transformer
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • proto/pabloj/trunk/src/toolchain/pabloS/transformer/Transformer.java

    r3281 r3287  
    1515import toolchain.pabloS.transformer.visitors.SurroundConditionsWithBitBlockAny;
    1616import toolchain.pabloS.transformer.visitors.carry.CarryIntroXFormer;
     17import toolchain.pabloS.transformer.visitors.carry.TempifyCarryBuiltinCalls;
    1718
    1819public class Transformer {
     
    5556                pabloS.ast.ASTNode decoratedTree = ASTTree.deepCopy();
    5657               
     58
     59               
     60                // decoratedTree = TempifyCarryBuiltinCalls.apply(decoratedTree);
     61               
    5762                decoratedTree = ExpandAugmentedAssignments.apply(decoratedTree);
    5863                decoratedTree = SurroundAssert0sWithIfs.apply(decoratedTree, getBuiltinEncoder());             
  • proto/pabloj/trunk/src/toolchain/pabloS/transformer/visitors/carry/TempifyCarryBuiltinCalls.java

    r3280 r3287  
    1414import toolchain.pabloS.ast.Accessors;
    1515import toolchain.pabloS.ast.Generators;
     16import toolchain.pabloS.ast.Mutators;
    1617import toolchain.pabloS.lang.BuiltinCallUtil;
    1718import toolchain.util.Labeller;
     
    4445                carryBuiltinCallAssigns.clear();
    4546        }
     47       
     48        public void visitLeave(FuncDefNode node) {
     49            Locator locator = node.getToken();
     50            Collections.reverse(carryBuiltinCallTemps);
     51            for(IdentifierNode temp : carryBuiltinCallTemps) {
     52                LocalVarDeclNode tempDecl = makeTempLocalVarDecl(locator, temp);
     53                Accessors.blockStmtNode(node).insertChild(tempDecl);
     54            }
     55        }
     56       
     57        public void visitLeave(BlockStmtNode node) {
     58            insertAssignsAfterNode(node);
     59        }
    4660
    47         public void visitEnter(IfStmtNode node) {
    48                 ASTNode condition = Accessors.condition(node);
    49                 TempifyCarryBuiltinCalls.apply(condition);
    50                 makeCarryBuiltinCallAssignNodes(node);
     61        public void visitLeave(IfStmtNode node) {
     62                //ASTNode condition = Accessors.condition(node);
     63                //TempifyCarryBuiltinCalls.apply(condition);
     64                //insertAssignsBeforeNode(node);
    5165        }
    5266       
    5367        public void visitLeave(WhileStmtNode node) {
    54                 ASTNode condition = Accessors.condition(node);
    55                 TempifyCarryBuiltinCalls.apply(condition);
    56                 makeCarryBuiltinCallAssignNodes(node);
     68                //ASTNode condition = Accessors.condition(node);
     69                //TempifyCarryBuiltinCalls.apply(condition);
     70                //insertAssignsBeforeNode(node);
    5771        }
    5872       
    5973        public void visitLeave(LocalVarDeclNode node) {
    60                 makeCarryBuiltinCallAssignNodes(node);
     74            //insertAssignsBeforeNode(node);
    6175        }
    6276       
    6377        public void visitLeave(AssignNode node) {
    64                 makeCarryBuiltinCallAssignNodes(node);
     78            //insertAssignsBeforeNode(node);
    6579        }
    6680                               
    67         public void visitLeave(FuncDefNode node) {
    68                 Locator locator = node.getToken();
    69                 Collections.reverse(carryBuiltinCallTemps);
    70                 for(IdentifierNode temp : carryBuiltinCallTemps) {
    71                         LocalVarDeclNode tempDecl = makeTempLocalVarDecl(locator, temp);
    72                         node.insertChild(tempDecl);
    73                 }
    74         }
    75                
     81
    7682        public void visitLeave(FuncCallNode node) {
    7783                if(isCarryBuiltinCallAndAssignRhs(node)) {
     
    8288                        carryBuiltinCallTemps.add(temp);
    8389                        carryBuiltinCallAssigns.add(carryBuiltinCallAssign);
     90
    8491                }
    8592        }
    8693       
    87                 private void makeCarryBuiltinCallAssignNodes(ASTNode node) {
    88                         ASTNode parent = node.getParent();
     94                private void insertAssignsAfterNode(ASTNode node) {
    8995                for(AssignNode assign : carryBuiltinCallAssigns) {
    90                         parent.insertAfterChild(parent.lastChild(), assign);
     96                        node.insertBeforeChild(node.child(0), assign);
    9197                }
    9298                carryBuiltinCallAssigns.clear();
     
    94100               
    95101                private LocalVarDeclNode makeTempLocalVarDecl(Locator locator, IdentifierNode temp) {
    96                         StreamTypeNode type = Generators.makeStreamType(locator);
     102                        StreamTypeNode streamType = Generators.makeStreamType(locator);
    97103                        ASTNode lhs = temp;
    98                         ASTNode rhs = Generators.makeMaskFuncCall(locator, Accessors.fieldWidth(type), 0);
    99                         LocalVarDeclNode tempLocalVarDecl = Generators.makeLocalVarDeclNode(locator, type, lhs, rhs);
     104                        int fieldWidth = streamType.getFieldWidth();
     105                        ASTNode rhs = Generators.makeMaskFuncCall(locator, fieldWidth, 0);
     106                        LocalVarDeclNode tempLocalVarDecl = Generators.makeLocalVarDeclNode(locator, streamType, lhs, rhs);
    100107                        return tempLocalVarDecl;
    101108                }
Note: See TracChangeset for help on using the changeset viewer.