Changeset 68f9c43 for src/Tuples


Ignore:
Timestamp:
Mar 16, 2018, 5:15:02 PM (8 years ago)
Author:
Aaron Moss <a3moss@…>
Branches:
new-env, with_gc
Children:
8d7bef2
Parents:
6171841
git-author:
Aaron Moss <a3moss@…> (03/16/18 17:04:24)
git-committer:
Aaron Moss <a3moss@…> (03/16/18 17:15:02)
Message:

First pass at delete removal

Location:
src/Tuples
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • src/Tuples/Explode.cc

    r6171841 r68f9c43  
    7070                                // should now be a tuple of references rather than a reference to a tuple.
    7171                                // Still, this code is a bit awkward, and could use some improvement.
    72                                 UniqueExpr * newUniqueExpr = new UniqueExpr( applyCast( uniqueExpr->get_expr() ), uniqueExpr->get_id() );
    73                                 delete uniqueExpr;
     72                                UniqueExpr * newUniqueExpr = new UniqueExpr{ applyCast( uniqueExpr->get_expr() ), uniqueExpr->get_id() };
    7473                                if ( castAdded ) {
    7574                                        // if a cast was added by applyCast, then unique expr now has one more layer of reference
     
    8887                                // field is consistent with the type of the tuple expr, since the field
    8988                                // may have changed from type T to T&.
    90                                 Expression * expr = tupleExpr->get_tuple();
    91                                 tupleExpr->set_tuple( nullptr );
    92                                 TupleIndexExpr * ret = new TupleIndexExpr( expr, tupleExpr->get_index() );
    93                                 delete tupleExpr;
    94                                 return ret;
     89                                return new TupleIndexExpr{ tupleExpr->get_tuple(), tupleExpr->get_index() };
    9590                        }
    9691                };
  • src/Tuples/Explode.h

    r6171841 r68f9c43  
    2727namespace SymTab {
    2828class Indexer;
    29 }  // namespace SymTab
     29}  // namespace SymTabf
    3030
    3131namespace Tuples {
     
    6767                                for ( ResolvExpr::Alternative & alt : alts ) {
    6868                                        // distribute reference cast over all components
    69                                         append( std::forward<Output>(out), distributeReference( alt.release_expr() ),
     69                                        append( std::forward<Output>(out), distributeReference( alt.expr ),
    7070                                                alt.env, alt.cost, alt.cvtCost );
    7171                                }
     
    9696                                        TupleIndexExpr * idx = new TupleIndexExpr( arg->clone(), i );
    9797                                        explodeUnique( idx, alt, indexer, std::forward<Output>(out), isTupleAssign );
    98                                         delete idx;
    9998                                }
    100                                 delete arg;
    10199                        }
    102100                } else {
  • src/Tuples/TupleExpansion.cc

    r6171841 r68f9c43  
    4545
    4646                        std::map< int, Expression * > decls; // not vector, because order added may not be increasing order
    47 
    48                         ~UniqueExprExpander() {
    49                                 for ( std::pair<const int, Expression *> & p : decls ) {
    50                                         delete p.second;
    51                                 }
    52                         }
    5347                };
    5448
     
    111105                                UntypedMemberExpr * newMemberExpr = new UntypedMemberExpr( memberExpr->member, inner );
    112106                                inner->location = newMemberExpr->location = loc;
    113                                 memberExpr->member = nullptr;
    114                                 memberExpr->aggregate = nullptr;
    115                                 delete memberExpr;
    116107                                return newMemberExpr->acceptMutator( expander );
    117108                        } else {
     
    135126                                expr->location = memberExpr->location;
    136127                        }
    137                         delete aggr;
    138128                        tupleExpr->location = memberExpr->location;
    139129                        return tupleExpr;
     
    181171                        decls[id] = condExpr;
    182172                }
    183                 delete unqExpr;
    184173                return decls[id]->clone();
    185174        }
     
    191180                ret->set_env( assnExpr->get_env() );
    192181                assnExpr->set_env( nullptr );
    193                 delete assnExpr;
    194182                return ret;
    195183        }
     
    222210                        newType->get_parameters().push_back( new TypeExpr( t->clone() ) );
    223211                }
    224                 delete tupleType;
    225212                return newType;
    226213        }
     
    233220                TypeSubstitution * env = tupleExpr->get_env();
    234221                tupleExpr->set_env( nullptr );
    235                 delete tupleExpr;
    236222
    237223                StructInstType * type = strict_dynamic_cast< StructInstType * >( tuple->get_result() );
     
    275261                TypeSubstitution * env = tupleExpr->get_env();
    276262
    277                 // remove data from shell and delete it
    278                 tupleExpr->set_result( nullptr );
    279                 tupleExpr->get_exprs().clear();
     263                // remove data from shell
    280264                tupleExpr->set_env( nullptr );
    281                 delete tupleExpr;
    282265
    283266                return replaceTupleExpr( result, exprs, env );
Note: See TracChangeset for help on using the changeset viewer.