Changeset 68f9c43 for src/Tuples
- Timestamp:
- Mar 16, 2018, 5:15:02 PM (8 years ago)
- 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)
- Location:
- src/Tuples
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
src/Tuples/Explode.cc
r6171841 r68f9c43 70 70 // should now be a tuple of references rather than a reference to a tuple. 71 71 // 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() }; 74 73 if ( castAdded ) { 75 74 // if a cast was added by applyCast, then unique expr now has one more layer of reference … … 88 87 // field is consistent with the type of the tuple expr, since the field 89 88 // 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() }; 95 90 } 96 91 }; -
src/Tuples/Explode.h
r6171841 r68f9c43 27 27 namespace SymTab { 28 28 class Indexer; 29 } // namespace SymTab 29 } // namespace SymTabf 30 30 31 31 namespace Tuples { … … 67 67 for ( ResolvExpr::Alternative & alt : alts ) { 68 68 // 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 ), 70 70 alt.env, alt.cost, alt.cvtCost ); 71 71 } … … 96 96 TupleIndexExpr * idx = new TupleIndexExpr( arg->clone(), i ); 97 97 explodeUnique( idx, alt, indexer, std::forward<Output>(out), isTupleAssign ); 98 delete idx;99 98 } 100 delete arg;101 99 } 102 100 } else { -
src/Tuples/TupleExpansion.cc
r6171841 r68f9c43 45 45 46 46 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 }53 47 }; 54 48 … … 111 105 UntypedMemberExpr * newMemberExpr = new UntypedMemberExpr( memberExpr->member, inner ); 112 106 inner->location = newMemberExpr->location = loc; 113 memberExpr->member = nullptr;114 memberExpr->aggregate = nullptr;115 delete memberExpr;116 107 return newMemberExpr->acceptMutator( expander ); 117 108 } else { … … 135 126 expr->location = memberExpr->location; 136 127 } 137 delete aggr;138 128 tupleExpr->location = memberExpr->location; 139 129 return tupleExpr; … … 181 171 decls[id] = condExpr; 182 172 } 183 delete unqExpr;184 173 return decls[id]->clone(); 185 174 } … … 191 180 ret->set_env( assnExpr->get_env() ); 192 181 assnExpr->set_env( nullptr ); 193 delete assnExpr;194 182 return ret; 195 183 } … … 222 210 newType->get_parameters().push_back( new TypeExpr( t->clone() ) ); 223 211 } 224 delete tupleType;225 212 return newType; 226 213 } … … 233 220 TypeSubstitution * env = tupleExpr->get_env(); 234 221 tupleExpr->set_env( nullptr ); 235 delete tupleExpr;236 222 237 223 StructInstType * type = strict_dynamic_cast< StructInstType * >( tuple->get_result() ); … … 275 261 TypeSubstitution * env = tupleExpr->get_env(); 276 262 277 // remove data from shell and delete it 278 tupleExpr->set_result( nullptr ); 279 tupleExpr->get_exprs().clear(); 263 // remove data from shell 280 264 tupleExpr->set_env( nullptr ); 281 delete tupleExpr;282 265 283 266 return replaceTupleExpr( result, exprs, env );
Note:
See TracChangeset
for help on using the changeset viewer.