- Timestamp:
- Jan 12, 2016, 3:36:16 PM (9 years ago)
- Branches:
- ADT, aaron-thesis, arm-eh, ast-experimental, cleanup-dtors, ctor, deferred_resn, demangler, enum, forall-pointer-decay, gc_noraii, jacob/cs343-translation, jenkins-sandbox, master, memory, new-ast, new-ast-unique-expr, new-env, no_list, persistent-indexer, pthread-emulation, qualifiedEnum, resolv-new, string, with_gc
- Children:
- 36874e4
- Parents:
- 1cced28
- Location:
- src/GenPoly
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
src/GenPoly/Box.cc
r1cced28 rb18b0b5 492 492 assert( arg ); 493 493 if ( isPolyType( realParam->get_type(), tyVars ) ) { 494 // if ( dynamic_cast< PointerType *>( arg->get_type() ) ) {495 // return new CastExpr( new VariableExpr( param ), arg->get_type()->clone() );496 // } else {497 494 if ( dynamic_cast<TypeInstType *>(arg->get_type()) == NULL ) { 498 495 UntypedExpr *deref = new UntypedExpr( new NameExpr( "*?" ) ); … … 501 498 return deref; 502 499 } // if 503 // }504 500 } // if 505 501 return new VariableExpr( param ); … … 1036 1032 1037 1033 // add size/align for generic types to parameter list 1038 std::set< std::string > seenTypes; // <sizeofName for generic types we've seen1034 std::set< std::string > seenTypes; // sizeofName for generic types we've seen 1039 1035 for ( std::list< DeclarationWithType* >::const_iterator fnParm = last; fnParm != funcType->get_parameters().end(); ++fnParm ) { 1040 1036 Type *parmType = (*fnParm)->get_type(); -
src/GenPoly/ScrubTyVars.cc
r1cced28 rb18b0b5 44 44 } 45 45 46 Type * ScrubTyVars::mutateAggregateType( Type *ty ) { 47 if ( doAll ? isPolyType( ty ) : isPolyType( ty, tyVars ) ) { 48 PointerType *ret = new PointerType( Type::Qualifiers(), new VoidType( ty->get_qualifiers() ) ); 49 delete ty; 50 return ret; 51 } 52 return ty; 53 } 54 55 Type * ScrubTyVars::mutate( StructInstType *structInst ) { 56 return mutateAggregateType( structInst ); 57 } 58 59 Type * ScrubTyVars::mutate( UnionInstType *unionInst ) { 60 return mutateAggregateType( unionInst ); 61 } 62 46 63 Expression * ScrubTyVars::mutate( SizeofExpr *szeof ) { 47 64 // sizeof( T ) => _sizeof_T parameter, which is the size of T -
src/GenPoly/ScrubTyVars.h
r1cced28 rb18b0b5 35 35 template< typename SynTreeClass > 36 36 static SynTreeClass *scrub( SynTreeClass *target ); 37 37 38 38 virtual Type* mutate( TypeInstType *typeInst ); 39 Expression* mutate( SizeofExpr *szeof ); 40 Expression* mutate( AlignofExpr *algnof ); 39 virtual Type* mutate( StructInstType *structInst ); 40 virtual Type* mutate( UnionInstType *unionInst ); 41 virtual Expression* mutate( SizeofExpr *szeof ); 42 virtual Expression* mutate( AlignofExpr *algnof ); 41 43 virtual Type* mutate( PointerType *pointer ); 44 42 45 private: 46 /// Mutates (possibly generic) aggregate types appropriately 47 Type* mutateAggregateType( Type *ty ); 48 43 49 bool doAll; 44 50 const TyVarMap &tyVars;
Note: See TracChangeset
for help on using the changeset viewer.