Changeset 2183e12
- Timestamp:
 - Apr 17, 2017, 3:41:36 PM (9 years ago)
 - Branches:
 - ADT, aaron-thesis, arm-eh, ast-experimental, cleanup-dtors, deferred_resn, demangler, enum, forall-pointer-decay, jacob/cs343-translation, jenkins-sandbox, master, new-ast, new-ast-unique-expr, new-env, no_list, persistent-indexer, pthread-emulation, qualifiedEnum, resolv-new, with_gc
 - Children:
 - 4ae83a4b
 - Parents:
 - 33e22da
 - Location:
 - doc/generic_types
 - Files:
 - 
      
- 2 edited
 
- 
          
  .gitignore (modified) (1 diff)
 - 
          
  generic_types.tex (modified) (6 diffs)
 
 
Legend:
- Unmodified
 - Added
 - Removed
 
- 
      
doc/generic_types/.gitignore
r33e22da r2183e12 17 17 *.synctex.gz 18 18 comment.cut 19 timing.tex  - 
      
doc/generic_types/generic_types.tex
r33e22da r2183e12 214 214 A design advantage is that, unlike \CC template-functions, \CFA polymorphic-functions are compatible with C \emph{separate compilation}, preventing compilation and code bloat. 215 215 216 Since bare polymorphic-types provide a restricted set of available operations, \CFA provides a \emph{type assertion}~\cite {alphard} mechanism to provide further type information, where type assertions may be variable or function declarations that depend on a polymorphic type-variable.216 Since bare polymorphic-types provide a restricted set of available operations, \CFA provides a \emph{type assertion}~\cite[pp.~37-44]{Alphard} mechanism to provide further type information, where type assertions may be variable or function declarations that depend on a polymorphic type-variable. 217 217 For example, the function @twice@ can be defined using the \CFA syntax for operator overloading: 218 218 \newpage … … 280 280 \lstDeleteShortInline@% 281 281 \par\smallskip 282 \begin{tabular}{@{}l@{\hspace{ \parindent}}|@{\hspace{\parindent}}l@{}}282 \begin{tabular}{@{}l@{\hspace{1.5\parindent}}||@{\hspace{1.5\parindent}}l@{}} 283 283 \begin{lstlisting} 284 284 short int MAX = ...; … … 587 587 \lstDeleteShortInline@% 588 588 \par\smallskip 589 \begin{tabular}{@{}l@{\hspace{ \parindent}}|@{\hspace{\parindent}}l@{}}589 \begin{tabular}{@{}l@{\hspace{1.5\parindent}}||@{\hspace{1.5\parindent}}l@{}} 590 590 \begin{lstlisting} 591 591 int f( int, int ); … … 616 616 \lstDeleteShortInline@% 617 617 \par\smallskip 618 \begin{tabular}{@{}l@{\hspace{ \parindent}}|@{\hspace{\parindent}}l@{}}618 \begin{tabular}{@{}l@{\hspace{1.5\parindent}}||@{\hspace{1.5\parindent}}l@{}} 619 619 \begin{lstlisting} 620 620 int x = 10; … … 658 658 \lstDeleteShortInline@% 659 659 \par\smallskip 660 \begin{tabular}{@{}l@{\hspace{ \parindent}}|@{\hspace{\parindent}}l@{}}660 \begin{tabular}{@{}l@{\hspace{1.5\parindent}}||@{\hspace{1.5\parindent}}l@{}} 661 661 \begin{lstlisting} 662 662 [int, int, long, double] x; … … 1015 1015 \end{table} 1016 1016 1017 The C and \CCV variants are generally the slowest with the largest memory footprint, because totheir less-efficient memory layout and the pointer-indirection necessary to implement generic types;1017 The C and \CCV variants are generally the slowest with the largest memory footprint, because of their less-efficient memory layout and the pointer-indirection necessary to implement generic types; 1018 1018 this inefficiency is exacerbated by the second level of generic types in the pair-based benchmarks. 1019 1019 By contrast, the \CFA and \CC variants run in roughly equivalent time for both the integer and pair of @_Bool@ and @char@ because the storage layout is equivalent.  
  Note:
 See   TracChangeset
 for help on using the changeset viewer.