Changeset a32346b


Ignore:
Timestamp:
Sep 25, 2018, 4:56:55 PM (3 years ago)
Author:
Aaron Moss <a3moss@…>
Branches:
aaron-thesis, arm-eh, cleanup-dtors, deferred_resn, jacob/cs343-translation, jenkins-sandbox, master, new-ast, new-ast-unique-expr, no_list, persistent-indexer
Children:
34a6b2e, a332d432
Parents:
48b7085 (diff), 560812b (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Merge branch 'master' of plg2.cs.uwaterloo.ca:software/cfa/cfa-cc

Files:
26 edited

Legend:

Unmodified
Added
Removed
  • .gitignore

    r48b7085 ra32346b  
    3838libcfa/prelude/gcc-builtins.cf
    3939libcfa/prelude/gcc-builtins.c
    40 libcfa/prelude/prelude.cf
     40libcfa/prelude/prelude.cfa
    4141libcfa/x64-debug/
    4242libcfa/x64-nodebug/
  • Jenkinsfile

    r48b7085 ra32346b  
    128128                        //Run the tests from the tests directory
    129129                        if ( Settings.RunAllTests ) {
    130                                 sh 'make --no-print-directory -C tests all-tests debug=yes'
    131                                 sh 'make --no-print-directory -C tests all-tests debug=no '
     130                                sh 'make --no-print-directory -C tests timeouts="--timeout=600" all-tests debug=yes'
     131                                sh 'make --no-print-directory -C tests timeouts="--timeout=600" all-tests debug=no '
    132132                        }
    133133                        else {
  • benchmark/Makefile.am

    r48b7085 ra32346b  
    3333TIME_FORMAT = "%E"
    3434PRINT_FORMAT = %20s: #Comments needed for spacing
    35 
    36 LIBFIBRE_DIR ?= /home/tdelisle/software/KOS/src/
    3735
    3836.NOTPARALLEL:
     
    111109
    112110## =========================================================================================================
    113 ctxswitch$(EXEEXT): \
     111CTXSWITCH_DEPEND  =                \
    114112        loop.run                                \
    115113        function.run                    \
     
    121119        ctxswitch-upp_coroutine.run     \
    122120        ctxswitch-upp_thread.run        \
    123         -ctxswitch-kos_fibre.run        \
    124         -ctxswitch-kos_fibre2.run       \
    125121        ctxswitch-goroutine.run         \
    126122        ctxswitch-java_thread.run
    127123
     124if WITH_LIBFIBRE
     125CTXSWITCH_DEPEND  +=           \
     126        ctxswitch-kos_fibre.run  \
     127        ctxswitch-kos_fibre2.run
     128
     129
     130ctxswitch-kos_fibre$(EXEEXT):
     131        @$(CXXCOMPILE) -DBENCH_N=50000000 $(srcdir)/ctxswitch/kos_fibre.cpp  -I$(LIBFIBRE_DIR) -lfibre
     132
     133ctxswitch-kos_fibre2$(EXEEXT):
     134        @$(CXXCOMPILE) -DBENCH_N=50000000 $(srcdir)/ctxswitch/kos_fibre2.cpp -I$(LIBFIBRE_DIR) -lfibre
     135endif
     136
     137ctxswitch$(EXEEXT): $(CTXSWITCH_DEPEND)
     138
    128139ctxswitch-pthread$(EXEEXT):
    129140        @$(COMPILE)    -DBENCH_N=50000000 $(srcdir)/ctxswitch/pthreads.c
     
    143154ctxswitch-upp_thread$(EXEEXT):
    144155        @$(UPPCOMPILE) -DBENCH_N=50000000 $(srcdir)/ctxswitch/upp_thrd.cc
    145 
    146 ctxswitch-kos_fibre$(EXEEXT):
    147         @$(CXXCOMPILE) -DBENCH_N=50000000 $(srcdir)/ctxswitch/kos_fibre.cpp  -I$(LIBFIBRE_DIR) -lfibre
    148 
    149 ctxswitch-kos_fibre2$(EXEEXT):
    150         @$(CXXCOMPILE) -DBENCH_N=50000000 $(srcdir)/ctxswitch/kos_fibre2.cpp -I$(LIBFIBRE_DIR) -lfibre
    151156
    152157ctxswitch-goroutine$(EXEEXT):
  • benchmark/Makefile.in

    r48b7085 ra32346b  
    9393host_triplet = @host@
    9494noinst_PROGRAMS =
     95@WITH_LIBFIBRE_TRUE@am__append_1 = \
     96@WITH_LIBFIBRE_TRUE@    ctxswitch-kos_fibre.run  \
     97@WITH_LIBFIBRE_TRUE@    ctxswitch-kos_fibre2.run
     98
    9599subdir = benchmark
    96100ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
     
    273277TIME_FORMAT = "%E"
    274278PRINT_FORMAT = %20s: #Comments needed for spacing
     279CTXSWITCH_DEPEND = loop.run function.run fetch_add.run \
     280        ctxswitch-pthread.run ctxswitch-cfa_coroutine.run \
     281        ctxswitch-cfa_thread.run ctxswitch-cfa_thread2.run \
     282        ctxswitch-upp_coroutine.run ctxswitch-upp_thread.run \
     283        ctxswitch-goroutine.run ctxswitch-java_thread.run \
     284        $(am__append_1)
    275285testdir = $(top_srcdir)/tests
    276286all: all-am
     
    465475
    466476
    467 .cfa.o: $(CFACC) $(CFACPP)
     477.cfa.o:
    468478        $(AM_V_CFA)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
    469479        $(CFACOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
    470480        $(am__mv) $$depbase.Tpo $$depbase.Po
    471 
    472 LIBFIBRE_DIR ?= /home/tdelisle/software/KOS/src/
    473481
    474482.NOTPARALLEL:
     
    541549        $(COMPILE) -DBENCH_N=500000000  fetch_add.c
    542550
    543 ctxswitch$(EXEEXT): \
    544         loop.run                                \
    545         function.run                    \
    546         fetch_add.run                   \
    547         ctxswitch-pthread.run           \
    548         ctxswitch-cfa_coroutine.run     \
    549         ctxswitch-cfa_thread.run        \
    550         ctxswitch-cfa_thread2.run       \
    551         ctxswitch-upp_coroutine.run     \
    552         ctxswitch-upp_thread.run        \
    553         -ctxswitch-kos_fibre.run        \
    554         -ctxswitch-kos_fibre2.run       \
    555         ctxswitch-goroutine.run         \
    556         ctxswitch-java_thread.run
     551@WITH_LIBFIBRE_TRUE@ctxswitch-kos_fibre$(EXEEXT):
     552@WITH_LIBFIBRE_TRUE@    @$(CXXCOMPILE) -DBENCH_N=50000000 $(srcdir)/ctxswitch/kos_fibre.cpp  -I$(LIBFIBRE_DIR) -lfibre
     553
     554@WITH_LIBFIBRE_TRUE@ctxswitch-kos_fibre2$(EXEEXT):
     555@WITH_LIBFIBRE_TRUE@    @$(CXXCOMPILE) -DBENCH_N=50000000 $(srcdir)/ctxswitch/kos_fibre2.cpp -I$(LIBFIBRE_DIR) -lfibre
     556
     557ctxswitch$(EXEEXT): $(CTXSWITCH_DEPEND)
    557558
    558559ctxswitch-pthread$(EXEEXT):
     
    573574ctxswitch-upp_thread$(EXEEXT):
    574575        @$(UPPCOMPILE) -DBENCH_N=50000000 $(srcdir)/ctxswitch/upp_thrd.cc
    575 
    576 ctxswitch-kos_fibre$(EXEEXT):
    577         @$(CXXCOMPILE) -DBENCH_N=50000000 $(srcdir)/ctxswitch/kos_fibre.cpp  -I$(LIBFIBRE_DIR) -lfibre
    578 
    579 ctxswitch-kos_fibre2$(EXEEXT):
    580         @$(CXXCOMPILE) -DBENCH_N=50000000 $(srcdir)/ctxswitch/kos_fibre2.cpp -I$(LIBFIBRE_DIR) -lfibre
    581576
    582577ctxswitch-goroutine$(EXEEXT):
  • configure

    r48b7085 ra32346b  
    630630GREP
    631631CPP
     632WITH_LIBFIBRE_FALSE
     633WITH_LIBFIBRE_TRUE
    632634RANLIB
    633635LEXLIB
     
    54395441
    54405442# Checks for libraries.
     5443{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Fibre::yield in -lfibre" >&5
     5444$as_echo_n "checking for Fibre::yield in -lfibre... " >&6; }
     5445if ${ac_cv_lib_fibre_Fibre__yield+:} false; then :
     5446  $as_echo_n "(cached) " >&6
     5447else
     5448  ac_check_lib_save_LIBS=$LIBS
     5449LIBS="-lfibre  $LIBS"
     5450cat confdefs.h - <<_ACEOF >conftest.$ac_ext
     5451/* end confdefs.h.  */
     5452
     5453/* Override any GCC internal prototype to avoid an error.
     5454   Use char because int might match the return type of a GCC
     5455   builtin and then its argument prototype would still apply.  */
     5456#ifdef __cplusplus
     5457extern "C"
     5458#endif
     5459char Fibre::yield ();
     5460int
     5461main ()
     5462{
     5463return Fibre::yield ();
     5464  ;
     5465  return 0;
     5466}
     5467_ACEOF
     5468if ac_fn_c_try_link "$LINENO"; then :
     5469  ac_cv_lib_fibre_Fibre__yield=yes
     5470else
     5471  ac_cv_lib_fibre_Fibre__yield=no
     5472fi
     5473rm -f core conftest.err conftest.$ac_objext \
     5474    conftest$ac_exeext conftest.$ac_ext
     5475LIBS=$ac_check_lib_save_LIBS
     5476fi
     5477{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_fibre_Fibre__yield" >&5
     5478$as_echo "$ac_cv_lib_fibre_Fibre__yield" >&6; }
     5479if test "x$ac_cv_lib_fibre_Fibre__yield" = xyes; then :
     5480  HAVE_LIBFIBRE=1
     5481else
     5482  HAVE_LIBFIBRE=0
     5483fi
     5484
     5485 if test "$HAVE_LIBFIBRE" -eq 1; then
     5486  WITH_LIBFIBRE_TRUE=
     5487  WITH_LIBFIBRE_FALSE='#'
     5488else
     5489  WITH_LIBFIBRE_TRUE='#'
     5490  WITH_LIBFIBRE_FALSE=
     5491fi
     5492
    54415493
    54425494# Checks for header files.
     
    64786530if test -z "${am__fastdepCCAS_TRUE}" && test -z "${am__fastdepCCAS_FALSE}"; then
    64796531  as_fn_error $? "conditional \"am__fastdepCCAS\" was never defined.
     6532Usually this means the macro was only invoked conditionally." "$LINENO" 5
     6533fi
     6534if test -z "${WITH_LIBFIBRE_TRUE}" && test -z "${WITH_LIBFIBRE_FALSE}"; then
     6535  as_fn_error $? "conditional \"WITH_LIBFIBRE\" was never defined.
    64806536Usually this means the macro was only invoked conditionally." "$LINENO" 5
    64816537fi
  • configure.ac

    r48b7085 ra32346b  
    204204
    205205# Checks for libraries.
     206AC_CHECK_LIB([fibre], [Fibre::yield], [HAVE_LIBFIBRE=1], [HAVE_LIBFIBRE=0])
     207AM_CONDITIONAL([WITH_LIBFIBRE], [test "$HAVE_LIBFIBRE" -eq 1])
    206208
    207209# Checks for header files.
  • doc/bibliography/pl.bib

    r48b7085 ra32346b  
    701701% B
    702702
     703@article{Michael13,
     704    contributer = {pabuhr@plg},
     705    author      = {Maged M. Michael},
     706    title       = {The Balancing Act of Choosing Nonblocking Features},
     707    journal     = cacm,
     708    volume      = 56,
     709    number      = 9,
     710    month       = sep,
     711    year        = 2013,
     712    pages       = {46--53},
     713    publisher   = {ACM},
     714    address     = {New York, NY, USA},
     715}
     716
    703717@incollection{beta:old,
    704718    keywords    = {beta, patterns, virtual types},
     
    908922
    909923@misc{Cforall,
     924    contributer = {pabuhr@plg},
    910925    key         = {Cforall},
    911     title       = {\textsf{C}{$\mathbf{\forall}$} Features},
    912     howpublished= {\url{https://plg.uwaterloo.ca/~cforall/features}},
     926    author      = {{\textsf{C}{$\mathbf{\forall}$} Features}},
     927    howpublished= {\href{https://plg.uwaterloo.ca/~cforall/features}{https://\-plg.uwaterloo.ca/\-~cforall/\-features}},
    913928    optnote     = {Accessed: 2018-01-01},
    914929}
     
    926941
    927942@misc{CFAStackEvaluation,
     943    contributer = {a3moss@plg},
    928944    author      = {Aaron Moss},
    929945    title       = {\textsf{C}$\mathbf{\forall}$ Stack Evaluation Programs},
     
    934950
    935951@article{Moss18,
    936     keywords    = {concurrency, C++},
     952    keywords    = {type systems, tuples, Cforall},
    937953    contributer = {pabuhr@plg},
    938954    author      = {Aaron Moss and Robert Schluntz and Peter A. Buhr},
     
    941957    month       = aug,
    942958    journal     = spe,
    943     note        = {http://dx.doi.org/10.1002/spe.2624},
     959    note        = {\href{http://dx.doi.org/10.1002/spe.2624}{http://\-dx.doi.org/\-10.1002/\-spe.2624}},
    944960}
    945961
     
    14171433}
    14181434
     1435@misc{NThreadCode13,
     1436    keywords    = {N-thread software-solution mutual exclusion},
     1437    contributer = {pabuhr@plg},
     1438    key         = {concurrent locking},
     1439    author      = {Peter A. Buhr and David Dice and Wim H. Hesselink},
     1440    title       = {concurrent-locking},
     1441    howpublished= {\href{https://github.com/pabuhr/concurrent-locking}{https://\-github.com/\-pabuhr/\-concurrent-locking}},
     1442    optnote     = {[Accessed April 2017]},
     1443}
     1444
    14191445@incollection{Reppy93,
    14201446    keywords    = {ML, concurrency, continuation passing},
     
    14901516    month       = dec,
    14911517    year        = 2017,
    1492     note        = {\href{http://plg.uwaterloo.ca/~usystem/pub/uSystem/u++-7.0.0.sh}{http://\-plg.\-uwaterloo.\-ca/\-$\sim$usystem/\-pub/\-uSystem/\-u++-7.0.0.sh}},
     1518    note        = {\href{https://plg.uwaterloo.ca/~usystem/pub/uSystem/uC++.pdf}{https://\-plg.uwaterloo.ca/\-~usystem/\-pub/\-uSystem/uC++.pdf}},
    14931519}
    14941520
     
    15571583}
    15581584
     1585@mastersthesis{Sun15,
     1586    author      = {Sun, Xianda},
     1587    title       = {Concurrent High-performance Persistent Hash Table In {J}ava},
     1588    school      = {School of Computer Science, University of Waterloo},
     1589    year        = 2015,
     1590    optaddress  = {Waterloo, Ontario, Canada, N2L 3G1},
     1591    note        = {\href{https://uwspace.uwaterloo.ca/handle/10012/10013}{https://\-uwspace.uwaterloo.ca/\-handle/\-10012/\-10013}},
     1592}
     1593
    15591594@book{Andrews91:book,
    15601595    keywords    = {concurrency},
     
    15811616
    15821617@mastersthesis{Delisle18,
     1618    keywords    = {concurrency, Cforall},
     1619    contributer = {pabuhr@plg},
    15831620    author      = {Thierry Delisle},
    15841621    title       = {Concurrency in \textsf{C}$\mathbf{\forall}$},
    15851622    school      = {School of Computer Science, University of Waterloo},
    15861623    year        = 2018,
    1587     address     = {Waterloo, Ontario, Canada, N2L 3G1},
     1624    optaddress  = {Waterloo, Ontario, Canada, N2L 3G1},
    15881625    note        = {\href{https://uwspace.uwaterloo.ca/handle/10012/12888}{https://\-uwspace.uwaterloo.ca/\-handle/\-10012/\-12888}},
     1626}
     1627
     1628@article{Delisle18b,
     1629    keywords    = {concurrency, Cforall},
     1630    contributer = {pabuhr@plg},
     1631    author      = {Thierry Delisle and Peter A. Buhr},
     1632    title       = {Concurrency in \textsf{C}$\mathbf{\forall}$},
     1633    year        = 2018,
     1634    journal     = spe,
     1635    pages       = {1-32},
     1636    note        = {submitted},
    15891637}
    15901638
     
    28652913    keywords    = {concurrency, mutual exclusion, performance experiment, software solutions},
    28662914    title       = {Fast mutual exclusion by the {T}riangle algorithm},
    2867     author      = {Wim H. Hesselink and Peter Buhr and David Dice},
     2915    author      = {Wim H. Hesselink and Peter A. Buhr and David Dice},
    28682916    journal     = ccpe,
    28692917    volume      = 30,
     
    28722920    month       = feb,
    28732921    publisher   = {John Wiley \& Sons},
    2874     note        = {\url{https://doi.org/10.1002/cpe.4183}}
     2922    note        = {\href{https://doi.org/10.1002/cpe.4183}{https://\-doi.org/\-10.1002/\-cpe.4183}}
    28752923}
    28762924
     
    32843332    edition     = {{S}imon {M}arlow},
    32853333    year        = 2010,
    3286     note        = {\href{https://haskell.org/definition/haskell2010.pdf}{https://haskell.org/\-definition/\-haskell2010.pdf}},
     3334    note        = {\href{https://haskell.org/definition/haskell2010.pdf}{https://\-haskell.org/\-definition/\-haskell2010.pdf}},
    32873335}
    32883336
     
    33583406}
    33593407
    3360 @article{Hesselink17,
     3408@article{Hesselink17b,
    33613409    keywords    = {concurrency, mutual exclusion, performance experiment, software solutions},
    33623410    title       = {High-Contention Mutual Exclusion by Elevator Algorithms},
    3363     author      = {Peter Buhr and David Dice and Wim H. Hesselink},
     3411    author      = {Peter A. Buhr and David Dice and Wim H. Hesselink},
    33643412    journal     = ccpe,
    33653413    volume      = 30,
     
    33683416    month       = sep,
    33693417    publisher   = {John Wiley \& Sons},
    3370     note        = {\url{https://doi-org.proxy.lib.uwaterloo.ca/10.1002/cpe.4475}}
     3418    note        = {\href{https://doi-org.proxy.lib.uwaterloo.ca/10.1002/cpe.4475}{https://\-doi-org.proxy.lib.uwaterloo.ca/\-10.1002/\-cpe.4475}},
    33713419}
    33723420
     
    38463894
    38473895% K
     3896
     3897@inproceedings{Buhr96b,
     3898    author      = {Peter A. Buhr and Martin Karsten and Jun Shih},
     3899    title       = {{\small\textsf{KDB}}: A Multi-threaded Debugger for Multi-threaded Applications},
     3900    booktitle   = {Proceedings of SPDT'96: SIGMETRICS Symposium on Parallel and Distributed Tools},
     3901    publisher   = {ACM Press},
     3902    address     = {Philadelphia, Pennsylvania, U.S.A.},
     3903    month       = may,
     3904    year        = 1996,
     3905    pages       = {80-87},
     3906}
    38483907
    38493908@article{Duggan96,
     
    45344593% N
    45354594
     4595@techreport{Drepper03,
     4596    keywords    = {NPTL, threading, 1:1 model},
     4597    contributer = {pabuhr@plg},
     4598    author      = {Ulrich Drepper and Ingo Molnar},
     4599    title       = {The Native POSIX Thread Library for Linux},
     4600    institution = {Red Hat},
     4601    year        = 2003,
     4602    note        = {\href{http://www.cs.utexas.edu/~witchel/372/lectures/POSIX_Linux_Threading.pdf}{http://www.cs.utexas.edu/\-$\sim$witchel/\-372/\-lectures/\-POSIX\_Linux\_Threading.pdf}},
     4603}
     4604
    45364605@article{Haddon77,
    45374606    keywords    = {monitors, nested monitor calls},
     
    46574726    volume      = 9,
    46584727    pages       = {157-164},
     4728}
     4729
     4730@misc{nginx,
     4731    key         = {nginx},
     4732    author      = {{NGINX}},
     4733    howpublished= {\href{https://www.nginx.com}{https://\-www.nginx.com}},
    46594734}
    46604735
     
    47694844@misc{obj-c-book,
    47704845    keywords    = {objective-c},
    4771     contributor = {a3moss@uwaterloo.ca},
     4846    contributor = {pabuhr@plg},
    47724847    key         = {Objective-C},
    4773     title       = {Objective-C},
     4848    author      = {Objective-C},
    47744849    publisher   = {Apple Inc.},
    4775     year        = 2015,
    4776     howpublished= {\href{https://developer.apple.com/library/content/documentation/General/Conceptual/DevPedia-CocoaCore/ObjectiveC.html}{https://developer.apple.com/\-library/\-content/\-documentation/\-General/\-Conceptual/\-DevPedia-\-CocoaCore/\-ObjectiveC.html}},
     4850    year        = 2014,
     4851    howpublished= {\href{https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC}{https://\-developer.apple.com/\-library/archive/\-documentation/\-Cocoa/\-Conceptual/\-ProgrammingWithObjectiveC}},
    47774852    optnote     = {Accessed: 2018-03}
    47784853}
     
    47844859    title       = {{X}code 7 Release Notes},
    47854860    year        = 2015,
    4786     howpublished= {\href{https://developer.apple.com/library/content/documentation/Xcode/Conceptual/RN-Xcode-Archive/Chapters/xc7_release_notes.html}{https://developer.apple.com/\-library/\-content/\-documentation/\-Xcode/\-Conceptual/\-RN-Xcode-Archive/\-Chapters/\-xc7\_release\_notes.html}},
     4861    howpublished= {\href{https://developer.apple.com/library/content/documentation/Xcode/Conceptual/RN-Xcode-Archive/Chapters/xc7_release_notes.html}{https://\-developer.apple.com/\-library/\-content/\-documentation/\-Xcode/\-Conceptual/\-RN-Xcode-Archive/\-Chapters/\-xc7\_release\_notes.html}},
    47874862    optnote     = {Accessed: 2017-04}
    47884863}
     
    52845359}
    52855360
     5361@misc{perf,
     5362    contributer = {pabuhr@plg},
     5363    key         = {perf},
     5364    author      = {perf},
     5365    howpublished= {\href{https://perf.wiki.kernel.org/index.php/Tutorial}{https://\-perf.wiki.kernel.org/\-index.php/\-Tutorial}},
     5366}
     5367
     5368@misc{Verch12,
     5369    contributer = {pabuhr@plg},
     5370    author      = {Shaun Verch},
     5371    title       = {Performance Analysis of 64-Bit Capriccio},
     5372    month       = may,
     5373    year        = 2012,
     5374    howpublished= {\href{http://cs.brown.edu/research/pubs/theses/masters/2012/verch.pdf}{http://cs.brown.edu/\-research/\-pubs/\-theses/\-masters/\-2012/\-verch.pdf}},
     5375    optnote     = {Accessed: 2013-10-4}
     5376}
     5377
    52865378@article{Anderson90,
    52875379    keywords    = {spin locks, back off, performance},
     
    55045596    note        = {Proceedings of the OOPSLA'89 Conference, Oct. 1--6, 1989, New Orleans, Lousiana},
    55055597    abstract    = {},
     5598}
     5599
     5600@inproceedings{Buhr98,
     5601    keywords    = {profiling, monitoring, visualization},
     5602    contributer = {pabuhr@plg},
     5603    author      = {Peter A. Buhr and Robert Denda},
     5604    title       = {{$\mu$Profiler} : Profiling User-Level Threads in a Shared-Memory Programming Environment},
     5605    booktitle   = {Proceedings of the Second International Symposium on Computing in Object-Oriented Parallel Environments (ISCOPE'98)},
     5606    series      = {Lecture Notes in Computer Science},
     5607    publisher   = {Springer-Verlag},
     5608    volume      = 1505,
     5609    opteditor   = {Dennis Caromel and Rodney R. Oldehoeft and Marydell Tholburn},
     5610    address     = {Santa Fe, New Mexico, U.S.A.},
     5611    month       = dec,
     5612    year        = 1998,
     5613    pages       = {159-166},
    55065614}
    55075615
     
    59656073}
    59666074
     6075@article{Ronsse03,
     6076    keywords    = {profiling, replay},
     6077    contributer = {pabuhr@plg},
     6078    author      = {Michiel Ronsse and De Bosschere, Koen and Mark Christiaens and Jacques Chassin de Kergommeaux and Dieter Kranzlm\"{u}ller},
     6079    title       = {Record/Replay for Nondeterministic Program Executions},
     6080    journal     = cacm,
     6081    month       = sep,
     6082    year        = 2003,
     6083    volume      = 46,
     6084    number      = 9,
     6085    pages       = {62-67},
     6086}
     6087
    59676088@article{Robinson48,
    59686089    keywords    = {recursion, Ackermann function},
     
    60036124}
    60046125
     6126@mastersthesis{Schuster99,
     6127    author      = {Oliver Schuster},
     6128    title       = {Replay of Concurrent Shared-Memory Programs},
     6129    school      = {Universit\"at Mannheim},
     6130    address     = {Mannheim, Deutschland},
     6131    year        = 1999,
     6132    month       = apr,
     6133    type        = {Diplomarbeit},
     6134    note        = {\href{ftp://plg.uwaterloo.ca/pub/theses/SchusterThesis.ps.gz}{ftp://\-plg.uwaterloo.ca/\-pub/\-theses/\-SchusterThesis.ps.gz}},
     6135}
     6136
    60056137@article{Euclid,
    60066138    keywords    = {Euclid},
     
    60346166    school      = {School of Computer Science, University of Waterloo},
    60356167    year        = 2017,
    6036     address     = {Waterloo, Ontario, Canada, N2L 3G1},
     6168    optaddress  = {Waterloo, Ontario, Canada, N2L 3G1},
    60376169    note        = {\href{https://uwspace.uwaterloo.ca/handle/10012/11830}{https://\-uwspace.uwaterloo.ca/\-handle/\-10012/\-11830}},
    60386170}
     
    68616993    contributer = {pabuhr@plg},
    68626994    key         = {TIOBE Index},
    6863     title       = {{TIOBE} Index},
     6995    author      = {{TIOBE Index}},
    68646996    howpublished= {\href{http://www.tiobe.com/tiobe_index}{http://\-www.tiobe.com/\-tiobe\_index}},
    68656997    optnote     = {Accessed: 2018-09},
     
    70017133    year        = 1980
    70027134}
     7135
     7136@misc{TraceCompass,
     7137    contributer = {pabuhr@plg},
     7138    key         = {Trace Compass},
     7139    author      = {{T}race {C}ompass},
     7140    howpublished= {\href{https://projects.eclipse.org/proposals/trace-compass}{https://\-projects.eclipse.org/\-proposals/\-trace-compass}},
     7141}
    70037142 
    70047143@article{Leroy00,
     
    71367275    title       = {Usability Challenges in Exception Handling},
    71377276    booktitle   = {5th International Workshop on Exception Handling (WEH)},
    7138     organization= {16th International Symposium on the Foundations of Software Engineering (FSE 16)},
     7277    optorganization= {16th International Symposium on the Foundations of Software Engineering (FSE 16)},
    71397278    address     = {Zurich, Switzerland},
    71407279    month       = jun,
     
    72807419}
    72817420
     7421@inproceedings{vonBehren03,
     7422    keywords    = {threads, events, web server},
     7423    contributer = {pabuhr@plg},
     7424    author      = {Rob von Behren and Jeremy Condit and Eric Brewer},
     7425    title       = {Why Events Are a Bad Idea (for high-concurrency servers)},
     7426    booktitle   = {HotOS IX: The 9th Workshop on Hot Topics in Operating Systems},
     7427    publisher   = {USENIX Association},
     7428    address     = {Lihue, Hawaii, U.S.A.},
     7429    month       = may,
     7430    year        = 2003,
     7431    pages       = {19-24},
     7432}
     7433
    72827434@techreport{Moss90,
    72837435    keywords    = {Swizzling, database},
     
    73447496    year        = 1986,
    73457497    editor      = {Norman Meyrowitz},
    7346     publisher   = sigplan # " 21(11)",
     7498    publisher   = sigplan,
    73477499    organization= {Association for Computing Machinery},
    73487500    address     = {Portland, Oregon},
    7349     month       = sep # { 29}
     7501    month       = sep,
    73507502}
    73517503
     
    73567508    year        = 1987,
    73577509    editor      = {Norman Meyrowitz},
    7358     publisher   = sigplan # " 22(12)",
     7510    publisher   = sigplan,
    73597511    organization= {Association for Computing Machinery},
    73607512    address     = {Orlando, Florida},
    7361     month       = oct # { 4--8}
     7513    month       = oct,
    73627514}
    73637515
     
    73687520    year        = 1988,
    73697521    editor      = {Norman Meyrowitz},
    7370     publisher   = sigplan # " 23(11)",
     7522    publisher   = sigplan,
    73717523    organization= {Association for Computing Machinery},
    73727524    address     = {San Diego, California},
    7373     month       = sep # { 25--30}
     7525    month       = sep,
    73747526}
    73757527
     
    73807532    year        = 1989,
    73817533    editor      = {Norman Meyrowitz},
    7382     publisher   = sigplan # " 24(10)",
     7534    publisher   = sigplan,
    73837535    organization= {Association for Computing Machinery},
    73847536    address     = {New Orleans, Louisiana},
    7385     month       = oct # { 1--6}
     7537    month       = oct,
    73867538}
    73877539
     
    73927544    year        = 1990,
    73937545    editor      = {Norman Meyrowitz},
    7394     publisher   = sigplan # " 25(10)",
     7546    publisher   = sigplan,
    73957547    organization= {Association for Computing Machinery},
    73967548    address     = {Ottawa, Canada},
    7397     month       = oct # { 21--25}
     7549    month       = oct,
    73987550}
    73997551
     
    74047556    year        = 1991,
    74057557    editor      = {Andreas Paepcke},
    7406     publisher   = sigplan # " 26(11)",
     7558    publisher   = sigplan,
    74077559    organization= {Association for Computing Machinery},
    74087560    address     = {Phoenix, Arizona},
    7409     month       = oct # { 6--11}
    7410 }
     7561    month       = oct,
     7562}
  • doc/proposals/virtual.txt

    r48b7085 ra32346b  
    8787first polymorphic parameter).
    8888
    89 Once a function in a trait has been marked as virtual it defines a new
    90 function that takes in that trait's reference and then dynamically calls the
    91 underlying type implementation. Hence a trait reference becomes a kind of
    92 abstract type, cannot be directly instantiated but can still be used.
     89Instances of a trait are created by wrapping an existing instance of a type
     90that implements that trait. This wrapper includes all the function pointers
     91and other values required to preform the dynamic look-up. These are chosen by
     92the normal look-up rules at the point of abstraction.
    9393
    9494One of the limitations of this design is that it does not support double
     
    9898is also restricted, initially forbidden, see extension.
    9999
     100Ownership of the underlying structure is also a bit of a trick. Considering
     101the use cases for trait object, it is probably best to have the underlying
     102object be heap allocated and owned by the trait object.
     103
    100104Extension: Multi-parameter Virtual Traits:
    101105
     
    157161context, for instance if the cast occurs on the right hand side of an
    158162assignment.
     163
     164Function look-up follows the same rules as relaxed (behavioural) inheritance.
     165Traits can be upcast and down cast without losing information unless the
     166trait is cast down to a structure. Here there are two options.
     167
     168  Abstraction Time Binding: The more efficient and consistant with other parts
     169of CFA. Only the trait types use dynamic look-up, if converveted back into a
     170structure the normal static look-up rules find the function at compile time.
     171Casting down to a structure type can then result in the loss of a set of
     172bindings.
     173  Construction Time Binding: For more consistant handling of the virtual
     174structs, they are always considered wrapped. Functions are bound to the
     175instance the moment it is constructed and remain unchanged throughout its
     176lifetime, so down casting does not lose information.
     177
     178(We will have to decide between one of these two.)
    159179
    160180Extension: Multiple Parents
     
    205225
    206226We have so far been silent on how the vtable is created, stored and accessed.
    207 
    208 Creation happens at compile time. Function pointers are found by using the
    209 same best match rules as elsewhere (additional rules for defaults from the
    210 parent may or may not be required). For strict virtual this must happen at the
    211 global scope and forbidding static functions, to ensure that a single unique
    212 vtable is created. Similarly, there may have to be stricter matching rules
    213 for the functions that go into the vtable, possibly requiring an exact match.
    214 Relaxed virtual could relax both restrictions, if we allow different vtable
    215 at different conversion (struct to trait reference) sites. If it is allowed
    216 local functions being bound to a vtable could cause issues when they go out
    217 of scope, however this should follow the lifetime rules most C programs
    218 already follow implicitly.
    219 
    220 Most vtables should be stored statically, the only exception being some of
    221 the relaxed vtables that could have local function pointers. These may be able
    222 to be stack allocated. All vtables should be immutable and require no manual
    223 cleanup.
     227The vtables for the two types might be handled slightly differently and then
     228there is also the hierarchy data for virtual casts.
     229
     230The hierarchy data is simple conceptually. A single (exactly one copy) pointer
     231for each type can act as the identity for it. The value of the pointer is
     232its parent type, with the root pointer being NULL. Additional meta-data
     233can accompany the parent pointer, such as a string name or the vtable fields.
     234
     235They types of each vtable can be constructed from the definitions of the
     236traits (or internal nodes). The stand alone/base vtable is the same for both
     237kinds of inheritance. It may be argumented differently however (include parent
     238/this pointer in hierachal inheritance).
     239
     240Creation of the actual vtable is tricky. For classical single implementation
     241semantics we would assemble the functions and create one vtable at compile
     242time. However, not only does this not give CFA-like behaviour, it is
     243impossible generally because types can satify assertions in different ways at
     244different times and stop satifying them. A special set of harder rules could
     245be used, instead we have decided to try creating multiple vtables for each
     246type. The different vtables will all implement the same type but not always
     247in the same way.
     248
     249Storage has some issues from creation. If the contents of every vtable could
     250be determained at compile time they could all be created and stored
     251statically. However since thunks can be constructed on the stack and become
     252the best match, that isn't always possible. Those will have to be stored in
     253dynamic memory. Which means that all vtables must be stored dynamically or
     254there must be a way to determain which ones to free when the trait object is
     255destroyed.
    224256
    225257Access has two main options:
  • driver/cfa.cc

    r48b7085 ra32346b  
    359359
    360360        string arch = m32 ? CFA_32_CPU : (m64 ? CFA_64_CPU : CFA_DEFAULT_CPU);
    361         if ( ! m32 && ! m64 && arch == "x86" ) {                        // no override and 32-bit architecture
    362                 args[nargs] = "-m32";
    363                 nargs += 1;
     361        if ( ! m32 && ! m64 ) {
     362                if ( arch == "x86" ) {
     363                        args[nargs] = "-m32";
     364                        nargs += 1;
     365                } else if ( arch == "x64" ) {
     366                        args[nargs] = "-m64";
     367                        nargs += 1;
     368                }  // if
    364369        } // if
    365370        const char * config = debug ? "debug": "nodebug";
  • libcfa/Makefile.in

    r48b7085 ra32346b  
    229229CFLAGS = @CFLAGS@
    230230CONFIGURATION = @CONFIGURATION@
     231CONFIG_BUILDLIB = @CONFIG_BUILDLIB@
    231232CONFIG_CFAFLAGS = @CONFIG_CFAFLAGS@
    232233CONFIG_CFLAGS = @CONFIG_CFLAGS@
  • libcfa/configure

    r48b7085 ra32346b  
    623623CFA_PREFIX
    624624CFA_NAME
     625BUILDLIB_FALSE
     626BUILDLIB_TRUE
     627CONFIG_BUILDLIB
    625628CONFIG_CFAFLAGS
    626629CONFIG_CFLAGS
     
    25312534                CONFIG_CFLAGS="-O0 -g"
    25322535                CONFIG_CFAFLAGS="-debug"
     2536                CONFIG_BUILDLIB="yes"
    25332537        ;;
    25342538        "nodebug" )
    25352539                CONFIG_CFLAGS="-O2 -s"
    25362540                CONFIG_CFAFLAGS="-nodebug"
     2541                CONFIG_BUILDLIB="yes"
    25372542        ;;
    25382543        "nolib"   )
    2539                 CONFIG_CFLAGS=""
    2540                 CONFIG_CFAFLAGS=""
     2544                CONFIG_CFLAGS="-O2 -s"
     2545                CONFIG_CFAFLAGS="-nodebug"
     2546                CONFIG_BUILDLIB="no"
    25412547        ;;
    25422548esac
    25432549
    25442550
     2551
     2552
     2553
     2554 if test "x${CONFIG_BUILDLIB}" = "xyes"; then
     2555  BUILDLIB_TRUE=
     2556  BUILDLIB_FALSE='#'
     2557else
     2558  BUILDLIB_TRUE='#'
     2559  BUILDLIB_FALSE=
     2560fi
    25452561
    25462562
     
    44784494fi
    44794495
     4496if test -z "${BUILDLIB_TRUE}" && test -z "${BUILDLIB_FALSE}"; then
     4497  as_fn_error $? "conditional \"BUILDLIB\" was never defined.
     4498Usually this means the macro was only invoked conditionally." "$LINENO" 5
     4499fi
    44804500if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
    44814501  as_fn_error $? "conditional \"AMDEP\" was never defined.
  • libcfa/configure.ac

    r48b7085 ra32346b  
    4141                CONFIG_CFLAGS="-O0 -g"
    4242                CONFIG_CFAFLAGS="-debug"
     43                CONFIG_BUILDLIB="yes"
    4344        ;;
    4445        "nodebug" )
    4546                CONFIG_CFLAGS="-O2 -s"
    4647                CONFIG_CFAFLAGS="-nodebug"
     48                CONFIG_BUILDLIB="yes"
    4749        ;;
    4850        "nolib"   )
    49                 CONFIG_CFLAGS=""
    50                 CONFIG_CFAFLAGS=""
     51                CONFIG_CFLAGS="-O2 -s"
     52                CONFIG_CFAFLAGS="-nodebug"
     53                CONFIG_BUILDLIB="no"
    5154        ;;
    5255esac
     
    5457AC_SUBST(CONFIG_CFLAGS)
    5558AC_SUBST(CONFIG_CFAFLAGS)
     59AC_SUBST(CONFIG_BUILDLIB)
     60
     61AM_CONDITIONAL([BUILDLIB], [test "x${CONFIG_BUILDLIB}" = "xyes"])
    5662
    5763#==============================================================================
  • libcfa/prelude/Makefile.am

    r48b7085 ra32346b  
    2020# put into lib for now
    2121cfalibdir = ${CFA_LIBDIR}
    22 cfalib_DATA = gcc-builtins.cf builtins.cf extras.cf prelude.cf bootloader.c
    23 noinst_DATA = ../src/prelude.c
     22cfalib_DATA = gcc-builtins.cf builtins.cf extras.cf prelude.cfa bootloader.c
    2423
    2524CC = @CFACC@
     
    4443        ${AM_V_GEN}gcc -I${srcdir} -E ${srcdir}/prototypes.c | awk -f ${srcdir}/prototypes.awk > $@
    4544
    46 prelude.cf : prelude-gen.cc
     45prelude.cfa : prelude-gen.cc
    4746        ${AM_V_GEN}${CXX} ${AM_CXXFLAGS} ${CXXFLAGS} ${AM_CFLAGS} ${<} -o prelude-gen -Wall -Wextra -O2 -g -std=c++14
    4847        @./prelude-gen > $@
     
    6059include $(DEPDIR)/builtins.Po
    6160
    62 ../src/prelude.c : prelude.cf extras.cf gcc-builtins.cf builtins.cf @CFACPP@
    63         ${AM_V_GEN}@CFACPP@ --prelude-dir=${builddir} -l prelude.cf $@  # use src/cfa-cpp as not in lib until after install
    64 
    65 bootloader.c : ${srcdir}/bootloader.cf prelude.cf extras.cf gcc-builtins.cf builtins.cf @CFACPP@
     61bootloader.c : ${srcdir}/bootloader.cf prelude.cfa extras.cf gcc-builtins.cf builtins.cf @CFACPP@
    6662        ${AM_V_GEN}@CFACPP@ --prelude-dir=${builddir} -tpm ${srcdir}/bootloader.cf $@  # use src/cfa-cpp as not in lib until after install
    6763
     
    6965        rm -rf $(DEPDIR)
    7066
    71 MOSTLYCLEANFILES = bootloader.c builtins.cf extras.cf gcc-builtins.c gcc-builtins.cf prelude.cf
     67MOSTLYCLEANFILES = bootloader.c builtins.cf extras.cf gcc-builtins.c gcc-builtins.cf prelude.cfa
    7268MAINTAINERCLEANFILES = ${addprefix ${libdir}/,${cfalib_DATA}} ${addprefix ${libdir}/,${lib_LIBRARIES}}
  • libcfa/prelude/Makefile.in

    r48b7085 ra32346b  
    147147  }
    148148am__installdirs = "$(DESTDIR)$(cfalibdir)"
    149 DATA = $(cfalib_DATA) $(noinst_DATA)
     149DATA = $(cfalib_DATA)
    150150am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
    151151am__DIST_COMMON = $(srcdir)/Makefile.in
     
    174174CFLAGS = @CFLAGS@
    175175CONFIGURATION = @CONFIGURATION@
     176CONFIG_BUILDLIB = @CONFIG_BUILDLIB@
    176177CONFIG_CFAFLAGS = @CONFIG_CFAFLAGS@
    177178CONFIG_CFLAGS = @CONFIG_CFLAGS@
     
    263264# put into lib for now
    264265cfalibdir = ${CFA_LIBDIR}
    265 cfalib_DATA = gcc-builtins.cf builtins.cf extras.cf prelude.cf bootloader.c
    266 noinst_DATA = ../src/prelude.c
     266cfalib_DATA = gcc-builtins.cf builtins.cf extras.cf prelude.cfa bootloader.c
    267267AM_CFLAGS = -g -Wall -Wno-unused-function @ARCH_FLAGS@ @CONFIG_CFLAGS@
    268268AM_CFAFLAGS = @CONFIG_CFAFLAGS@
    269 MOSTLYCLEANFILES = bootloader.c builtins.cf extras.cf gcc-builtins.c gcc-builtins.cf prelude.cf
     269MOSTLYCLEANFILES = bootloader.c builtins.cf extras.cf gcc-builtins.c gcc-builtins.cf prelude.cfa
    270270MAINTAINERCLEANFILES = ${addprefix ${libdir}/,${cfalib_DATA}} ${addprefix ${libdir}/,${lib_LIBRARIES}}
    271271all: all-am
     
    499499        ${AM_V_GEN}gcc -I${srcdir} -E ${srcdir}/prototypes.c | awk -f ${srcdir}/prototypes.awk > $@
    500500
    501 prelude.cf : prelude-gen.cc
     501prelude.cfa : prelude-gen.cc
    502502        ${AM_V_GEN}${CXX} ${AM_CXXFLAGS} ${CXXFLAGS} ${AM_CFLAGS} ${<} -o prelude-gen -Wall -Wextra -O2 -g -std=c++14
    503503        @./prelude-gen > $@
     
    515515include $(DEPDIR)/builtins.Po
    516516
    517 ../src/prelude.c : prelude.cf extras.cf gcc-builtins.cf builtins.cf @CFACPP@
    518         ${AM_V_GEN}@CFACPP@ --prelude-dir=${builddir} -l prelude.cf $@  # use src/cfa-cpp as not in lib until after install
    519 
    520 bootloader.c : ${srcdir}/bootloader.cf prelude.cf extras.cf gcc-builtins.cf builtins.cf @CFACPP@
     517bootloader.c : ${srcdir}/bootloader.cf prelude.cfa extras.cf gcc-builtins.cf builtins.cf @CFACPP@
    521518        ${AM_V_GEN}@CFACPP@ --prelude-dir=${builddir} -tpm ${srcdir}/bootloader.cf $@  # use src/cfa-cpp as not in lib until after install
    522519
  • libcfa/prelude/prelude-gen.cc

    r48b7085 ra32346b  
    142142
    143143int main() {
    144         cout << "# 2 \"prelude.cf\"  // needed for error messages from this file" << endl;
     144        cout << "# 2 \"prelude.cfa\"  // needed for error messages from this file" << endl;
    145145        cout << "trait sized(dtype T) {};" << endl;
    146146
  • libcfa/src/Makefile.am

    r48b7085 ra32346b  
    1616
    1717# create object files in directory with source files
    18 AUTOMAKE_OPTIONS = subdir-objects
     18AUTOMAKE_OPTIONS = foreign subdir-objects
    1919ARFLAGS = cr
    2020
     
    2424lib_LIBRARIES =  libcfa.a
    2525
     26VPATH += :../prelude
     27
    2628# AM_CFLAGS for all cfa source
    2729# AM_CFAFLAGS for only cfa source
    2830# use -no-include-stdhdr to prevent rebuild cycles
    2931# The built sources must not depend on the installed headers
    30 AM_CFAFLAGS = -quiet -in-tree -imacros prelude.c -I$(srcdir)/stdhdr @CONFIG_CFAFLAGS@
     32AM_CFAFLAGS = -quiet -in-tree -I$(srcdir)/stdhdr @CONFIG_CFAFLAGS@
    3133AM_CFLAGS = -g -Wall -Wno-unused-function @ARCH_FLAGS@ @CONFIG_CFLAGS@
    3234AM_CCASFLAGS = -g -Wall -Wno-unused-function @ARCH_FLAGS@ @CONFIG_CFLAGS@
     
    3436
    3537#----------------------------------------------------------------------------------------------------------------
     38if BUILDLIB
    3639headers = fstream.hfa iostream.hfa iterator.hfa limits.hfa rational.hfa time.hfa stdlib.hfa common.hfa \
    3740          containers/maybe.hfa containers/pair.hfa containers/result.hfa containers/vector.hfa
     41
     42headers_nosrc = math.hfa gmp.hfa time_t.hfa bits/align.hfa bits/containers.hfa bits/defs.hfa bits/debug.hfa bits/locks.hfa
    3843
    3944# not all platforms support concurrency, add option do disable it
    4045headers += concurrency/coroutine.hfa concurrency/thread.hfa concurrency/kernel.hfa concurrency/monitor.hfa concurrency/mutex.hfa
    4146
    42 libobjs = ${headers:.hfa=.o}
    43 libsrc = prelude.c startup.cfa interpose.cfa bits/debug.cfa assert.cfa exception.c virtual.c heap.cfa \
    44         ${headers:.hfa=.cfa}
     47headers_nosrc += concurrency/invoke.h
     48
     49libsrc = startup.cfa interpose.cfa bits/debug.cfa assert.cfa exception.c virtual.c heap.cfa ${headers:.hfa=.cfa}
    4550
    4651# not all platforms support concurrency, add option do disable it
    4752libsrc += concurrency/CtxSwitch-@ARCHITECTURE@.S concurrency/alarm.cfa concurrency/invoke.c concurrency/preemption.cfa
     53else
     54headers =
     55headers_nosrc =
     56libsrc =
     57endif
     58
    4859
    4960#----------------------------------------------------------------------------------------------------------------
    5061# add dependency to cfa-cpp so all libraries are rebuilt with new translator
    51 ${libobjs} : ${cfalib_DATA}
     62#@CFACC@ @CFACPP@ prelude.cfa
    5263
    53 libcfa_a_SOURCES = ${libsrc}
     64# add dependency of cfa files
     65libobjs = $(addsuffix .o, $(basename $(filter %.cfa,$(libsrc))))
     66$(libobjs) : @CFACC@ @CFACPP@ prelude.cfa
     67
     68
     69# .deps inclusion is not done automatically by automake for new languages
     70libdeps = $(join \
     71        $(addsuffix $(DEPDIR)/ , $(dir $(libobjs) ) ), \
     72        $(notdir ${libobjs:.o=.Po}) \
     73)
     74
     75-include $(libdeps)
     76
     77prelude.o : prelude.cfa extras.cf gcc-builtins.cf builtins.cf @CFACC@ @CFACPP@
     78        ${AM_V_GEN}@CFACC@ ${AM_CFLAGS} ${CFLAGS} -quiet -in-tree -XCFA -l ${<} -c -o ${@}
     79
     80
     81
     82#----------------------------------------------------------------------------------------------------------------
     83libcfa_a_SOURCES = prelude.cfa ${libsrc}
    5484
    5585stdhdr = ${shell find ${srcdir}/stdhdr -type f -printf "%p "}
    5686
    5787cfa_includedir = $(CFA_INCDIR)
    58 nobase_cfa_include_HEADERS = \
    59         ${headers}             \
    60         ${stdhdr}              \
    61         math.hfa               \
    62         gmp.hfa                \
    63         time_t.hfa             \
    64         bits/align.hfa         \
    65         bits/containers.hfa    \
    66         bits/defs.hfa          \
    67         bits/debug.hfa         \
    68         bits/locks.hfa         \
    69         concurrency/invoke.h
    70 
    71 MOSTLYCLEANFILES = prelude.c
     88nobase_cfa_include_HEADERS = ${stdhdr} ${headers} ${headers_nosrc}
    7289
    7390#----------------------------------------------------------------------------------------------------------------
    7491maintainer-clean-local:
    7592        -rm -rf ${CFA_INCDIR} ${CFA_LIBDIR}
     93
     94
     95# $(AM_V_CFA)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
     96#       $(CFACOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
     97#       $(am__mv) $$depbase.Tpo $$depbase.Po
  • libcfa/src/Makefile.in

    r48b7085 ra32346b  
    1919
    2020
    21 VPATH = @srcdir@
    2221am__is_gnu_make = { \
    2322  if test -z '$(MAKELEVEL)'; then \
     
    9796am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
    9897        $(ACLOCAL_M4)
    99 DIST_COMMON = $(srcdir)/Makefile.am $(nobase_cfa_include_HEADERS) \
    100         $(am__DIST_COMMON)
     98DIST_COMMON = $(srcdir)/Makefile.am \
     99        $(am__nobase_cfa_include_HEADERS_DIST) $(am__DIST_COMMON)
    101100mkinstalldirs = $(install_sh) -d
    102101CONFIG_CLEAN_FILES =
     
    138137libcfa_a_AR = $(AR) $(ARFLAGS)
    139138libcfa_a_LIBADD =
     139am__libcfa_a_SOURCES_DIST = prelude.cfa startup.cfa interpose.cfa \
     140        bits/debug.cfa assert.cfa exception.c virtual.c heap.cfa \
     141        fstream.cfa iostream.cfa iterator.cfa limits.cfa rational.cfa \
     142        time.cfa stdlib.cfa common.cfa containers/maybe.cfa \
     143        containers/pair.cfa containers/result.cfa \
     144        containers/vector.cfa concurrency/coroutine.cfa \
     145        concurrency/thread.cfa concurrency/kernel.cfa \
     146        concurrency/monitor.cfa concurrency/mutex.cfa \
     147        concurrency/CtxSwitch-@ARCHITECTURE@.S concurrency/alarm.cfa \
     148        concurrency/invoke.c concurrency/preemption.cfa
    140149am__dirstamp = $(am__leading_dot)dirstamp
    141 am__objects_1 = fstream.$(OBJEXT) iostream.$(OBJEXT) \
    142         iterator.$(OBJEXT) limits.$(OBJEXT) rational.$(OBJEXT) \
    143         time.$(OBJEXT) stdlib.$(OBJEXT) common.$(OBJEXT) \
    144         containers/maybe.$(OBJEXT) containers/pair.$(OBJEXT) \
    145         containers/result.$(OBJEXT) containers/vector.$(OBJEXT) \
    146         concurrency/coroutine.$(OBJEXT) concurrency/thread.$(OBJEXT) \
    147         concurrency/kernel.$(OBJEXT) concurrency/monitor.$(OBJEXT) \
    148         concurrency/mutex.$(OBJEXT)
    149 am__objects_2 = prelude.$(OBJEXT) startup.$(OBJEXT) \
    150         interpose.$(OBJEXT) bits/debug.$(OBJEXT) assert.$(OBJEXT) \
    151         exception.$(OBJEXT) virtual.$(OBJEXT) heap.$(OBJEXT) \
    152         $(am__objects_1) \
    153         concurrency/CtxSwitch-@ARCHITECTURE@.$(OBJEXT) \
    154         concurrency/alarm.$(OBJEXT) concurrency/invoke.$(OBJEXT) \
    155         concurrency/preemption.$(OBJEXT)
    156 am_libcfa_a_OBJECTS = $(am__objects_2)
     150@BUILDLIB_TRUE@am__objects_1 = fstream.$(OBJEXT) iostream.$(OBJEXT) \
     151@BUILDLIB_TRUE@ iterator.$(OBJEXT) limits.$(OBJEXT) \
     152@BUILDLIB_TRUE@ rational.$(OBJEXT) time.$(OBJEXT) \
     153@BUILDLIB_TRUE@ stdlib.$(OBJEXT) common.$(OBJEXT) \
     154@BUILDLIB_TRUE@ containers/maybe.$(OBJEXT) \
     155@BUILDLIB_TRUE@ containers/pair.$(OBJEXT) \
     156@BUILDLIB_TRUE@ containers/result.$(OBJEXT) \
     157@BUILDLIB_TRUE@ containers/vector.$(OBJEXT) \
     158@BUILDLIB_TRUE@ concurrency/coroutine.$(OBJEXT) \
     159@BUILDLIB_TRUE@ concurrency/thread.$(OBJEXT) \
     160@BUILDLIB_TRUE@ concurrency/kernel.$(OBJEXT) \
     161@BUILDLIB_TRUE@ concurrency/monitor.$(OBJEXT) \
     162@BUILDLIB_TRUE@ concurrency/mutex.$(OBJEXT)
     163@BUILDLIB_TRUE@am__objects_2 = startup.$(OBJEXT) interpose.$(OBJEXT) \
     164@BUILDLIB_TRUE@ bits/debug.$(OBJEXT) assert.$(OBJEXT) \
     165@BUILDLIB_TRUE@ exception.$(OBJEXT) virtual.$(OBJEXT) \
     166@BUILDLIB_TRUE@ heap.$(OBJEXT) $(am__objects_1) \
     167@BUILDLIB_TRUE@ concurrency/CtxSwitch-@ARCHITECTURE@.$(OBJEXT) \
     168@BUILDLIB_TRUE@ concurrency/alarm.$(OBJEXT) \
     169@BUILDLIB_TRUE@ concurrency/invoke.$(OBJEXT) \
     170@BUILDLIB_TRUE@ concurrency/preemption.$(OBJEXT)
     171am_libcfa_a_OBJECTS = prelude.$(OBJEXT) $(am__objects_2)
    157172libcfa_a_OBJECTS = $(am_libcfa_a_OBJECTS)
    158173AM_V_P = $(am__v_P_@AM_V@)
     
    191206am__v_CCLD_1 =
    192207SOURCES = $(libcfa_a_SOURCES)
    193 DIST_SOURCES = $(libcfa_a_SOURCES)
     208DIST_SOURCES = $(am__libcfa_a_SOURCES_DIST)
    194209am__can_run_installinfo = \
    195210  case $$AM_UPDATE_INFO_DIR in \
     
    197212    *) (install-info --version) >/dev/null 2>&1;; \
    198213  esac
     214am__nobase_cfa_include_HEADERS_DIST = ${shell find ${srcdir}/stdhdr \
     215        -type f -printf "%p "} fstream.hfa iostream.hfa iterator.hfa \
     216        limits.hfa rational.hfa time.hfa stdlib.hfa common.hfa \
     217        containers/maybe.hfa containers/pair.hfa containers/result.hfa \
     218        containers/vector.hfa concurrency/coroutine.hfa \
     219        concurrency/thread.hfa concurrency/kernel.hfa \
     220        concurrency/monitor.hfa concurrency/mutex.hfa math.hfa gmp.hfa \
     221        time_t.hfa bits/align.hfa bits/containers.hfa bits/defs.hfa \
     222        bits/debug.hfa bits/locks.hfa concurrency/invoke.h
    199223HEADERS = $(nobase_cfa_include_HEADERS)
    200224am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
     
    220244        $(top_srcdir)/./automake/depcomp
    221245DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
     246VPATH = @srcdir@ :../prelude
    222247ACLOCAL = @ACLOCAL@
    223248AMTAR = @AMTAR@
     
    243268CFLAGS = @CFLAGS@
    244269CONFIGURATION = @CONFIGURATION@
     270CONFIG_BUILDLIB = @CONFIG_BUILDLIB@
    245271CONFIG_CFAFLAGS = @CONFIG_CFAFLAGS@
    246272CONFIG_CFLAGS = @CONFIG_CFLAGS@
     
    328354
    329355# create object files in directory with source files
    330 AUTOMAKE_OPTIONS = subdir-objects
     356AUTOMAKE_OPTIONS = foreign subdir-objects
    331357ARFLAGS = cr
    332358CFACOMPILE = $(CFACC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CFAFLAGS) $(CFAFLAGS) $(AM_CFLAGS) $(CFLAGS)
     
    341367# use -no-include-stdhdr to prevent rebuild cycles
    342368# The built sources must not depend on the installed headers
    343 AM_CFAFLAGS = -quiet -in-tree -imacros prelude.c -I$(srcdir)/stdhdr @CONFIG_CFAFLAGS@
     369AM_CFAFLAGS = -quiet -in-tree -I$(srcdir)/stdhdr @CONFIG_CFAFLAGS@
    344370AM_CFLAGS = -g -Wall -Wno-unused-function @ARCH_FLAGS@ @CONFIG_CFLAGS@
    345371AM_CCASFLAGS = -g -Wall -Wno-unused-function @ARCH_FLAGS@ @CONFIG_CFLAGS@
     372@BUILDLIB_FALSE@headers =
    346373
    347374#----------------------------------------------------------------------------------------------------------------
    348375
    349376# not all platforms support concurrency, add option do disable it
    350 headers = fstream.hfa iostream.hfa iterator.hfa limits.hfa \
    351         rational.hfa time.hfa stdlib.hfa common.hfa \
    352         containers/maybe.hfa containers/pair.hfa containers/result.hfa \
    353         containers/vector.hfa concurrency/coroutine.hfa \
    354         concurrency/thread.hfa concurrency/kernel.hfa \
    355         concurrency/monitor.hfa concurrency/mutex.hfa
    356 libobjs = ${headers:.hfa=.o}
     377@BUILDLIB_TRUE@headers = fstream.hfa iostream.hfa iterator.hfa \
     378@BUILDLIB_TRUE@ limits.hfa rational.hfa time.hfa stdlib.hfa \
     379@BUILDLIB_TRUE@ common.hfa containers/maybe.hfa \
     380@BUILDLIB_TRUE@ containers/pair.hfa containers/result.hfa \
     381@BUILDLIB_TRUE@ containers/vector.hfa concurrency/coroutine.hfa \
     382@BUILDLIB_TRUE@ concurrency/thread.hfa concurrency/kernel.hfa \
     383@BUILDLIB_TRUE@ concurrency/monitor.hfa concurrency/mutex.hfa
     384@BUILDLIB_FALSE@headers_nosrc =
     385@BUILDLIB_TRUE@headers_nosrc = math.hfa gmp.hfa time_t.hfa \
     386@BUILDLIB_TRUE@ bits/align.hfa bits/containers.hfa \
     387@BUILDLIB_TRUE@ bits/defs.hfa bits/debug.hfa bits/locks.hfa \
     388@BUILDLIB_TRUE@ concurrency/invoke.h
     389@BUILDLIB_FALSE@libsrc =
    357390
    358391# not all platforms support concurrency, add option do disable it
    359 libsrc = prelude.c startup.cfa interpose.cfa bits/debug.cfa assert.cfa \
    360         exception.c virtual.c heap.cfa ${headers:.hfa=.cfa} \
    361         concurrency/CtxSwitch-@ARCHITECTURE@.S concurrency/alarm.cfa \
    362         concurrency/invoke.c concurrency/preemption.cfa
    363 libcfa_a_SOURCES = ${libsrc}
     392@BUILDLIB_TRUE@libsrc = startup.cfa interpose.cfa bits/debug.cfa \
     393@BUILDLIB_TRUE@ assert.cfa exception.c virtual.c heap.cfa \
     394@BUILDLIB_TRUE@ ${headers:.hfa=.cfa} \
     395@BUILDLIB_TRUE@ concurrency/CtxSwitch-@ARCHITECTURE@.S \
     396@BUILDLIB_TRUE@ concurrency/alarm.cfa concurrency/invoke.c \
     397@BUILDLIB_TRUE@ concurrency/preemption.cfa
     398
     399#----------------------------------------------------------------------------------------------------------------
     400# add dependency to cfa-cpp so all libraries are rebuilt with new translator
     401#@CFACC@ @CFACPP@ prelude.cfa
     402
     403# add dependency of cfa files
     404libobjs = $(addsuffix .o, $(basename $(filter %.cfa,$(libsrc))))
     405
     406# .deps inclusion is not done automatically by automake for new languages
     407libdeps = $(join \
     408        $(addsuffix $(DEPDIR)/ , $(dir $(libobjs) ) ), \
     409        $(notdir ${libobjs:.o=.Po}) \
     410)
     411
     412
     413#----------------------------------------------------------------------------------------------------------------
     414libcfa_a_SOURCES = prelude.cfa ${libsrc}
    364415stdhdr = ${shell find ${srcdir}/stdhdr -type f -printf "%p "}
    365416cfa_includedir = $(CFA_INCDIR)
    366 nobase_cfa_include_HEADERS = \
    367         ${headers}             \
    368         ${stdhdr}              \
    369         math.hfa               \
    370         gmp.hfa                \
    371         time_t.hfa             \
    372         bits/align.hfa         \
    373         bits/containers.hfa    \
    374         bits/defs.hfa          \
    375         bits/debug.hfa         \
    376         bits/locks.hfa         \
    377         concurrency/invoke.h
    378 
    379 MOSTLYCLEANFILES = prelude.c
     417nobase_cfa_include_HEADERS = ${stdhdr} ${headers} ${headers_nosrc}
    380418all: all-am
    381419
     
    506544
    507545@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/exception.Po@am__quote@
    508 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/prelude.Po@am__quote@
    509546@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/virtual.Po@am__quote@
    510547@AMDEP_TRUE@@am__include@ @am__quote@concurrency/$(DEPDIR)/CtxSwitch-@ARCHITECTURE@.Po@am__quote@
     
    676713        fi
    677714mostlyclean-generic:
    678         -test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
    679715
    680716clean-generic:
     
    784820
    785821
    786 .cfa.o: $(CFACC) $(CFACPP)
     822.cfa.o:
    787823        $(AM_V_CFA)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
    788824        $(CFACOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
    789825        $(am__mv) $$depbase.Tpo $$depbase.Po
    790 
    791 #----------------------------------------------------------------------------------------------------------------
    792 # add dependency to cfa-cpp so all libraries are rebuilt with new translator
    793 ${libobjs} : ${cfalib_DATA}
     826$(libobjs) : @CFACC@ @CFACPP@ prelude.cfa
     827
     828-include $(libdeps)
     829
     830prelude.o : prelude.cfa extras.cf gcc-builtins.cf builtins.cf @CFACC@ @CFACPP@
     831        ${AM_V_GEN}@CFACC@ ${AM_CFLAGS} ${CFLAGS} -quiet -in-tree -XCFA -l ${<} -c -o ${@}
    794832
    795833#----------------------------------------------------------------------------------------------------------------
     
    797835        -rm -rf ${CFA_INCDIR} ${CFA_LIBDIR}
    798836
     837# $(AM_V_CFA)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
     838#       $(CFACOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
     839#       $(am__mv) $$depbase.Tpo $$depbase.Po
     840
    799841# Tell versions [3.59,3.63) of GNU make to not export all variables.
    800842# Otherwise a system limit (for SysV at least) may be exceeded.
  • src/CodeTools/ResolvProtoDump.cc

    r48b7085 ra32346b  
    196196                        }
    197197                       
    198                         // default to just name
    199                         ss << pre << name;
     198                        // default to just name, with first character in lowercase
     199                        ss << pre
     200                           << (char)std::tolower( static_cast<unsigned char>(name[0]) )
     201                           << (name.c_str() + 1);
    200202                }
    201203
    202204                /// ensures type inst names are uppercase
    203205                static void ti_name( const std::string& name, std::stringstream& ss ) {
    204                         ss << (char)std::toupper( static_cast<unsigned char>(name[0]) )
    205                            << (name.c_str() + 1);
     206                        unsigned i = 0;
     207                        while ( i < name.size() && name[i] == '_' ) { ++i; }
     208                        if ( i == name.size() ) {
     209                                ss << "Anon";
     210                                return;
     211                        }
     212                        ss << (char)std::toupper( static_cast<unsigned char>(name[i]) )
     213                           << (name.c_str() + i + 1);
    206214                }
    207215
     
    219227                        void previsit( BasicType* bt ) { ss << (int)bt->get_kind(); }
    220228
    221                         // pointers represented as generic type
    222                         // TODO except pointer to function
    223                         void previsit( PointerType* ) { ss << "#$ptr<"; ++depth; }
    224                         void postvisit( PointerType* ) { --depth; ss << '>'; }
    225 
    226                         // arrays represented as generic type
     229                        // pointers (except function pointers) represented as generic type
     230                        void previsit( PointerType* pt ) {
     231                                if ( ! dynamic_cast<FunctionType*>(pt->base) ) { ss << "#$ptr<"; ++depth; }
     232                        }
     233                        void postvisit( PointerType* pt ) {
     234                                if ( ! dynamic_cast<FunctionType*>(pt->base) ) { --depth; ss << '>'; }
     235                        }
     236
     237                        // arrays represented as generic pointers
    227238                        void previsit( ArrayType* at ) {
    228                                 ss << "#$arr<";
     239                                ss << "#$ptr<";
    229240                                ++depth;
    230241                                at->base->accept( *visitor );
     
    244255                        }
    245256
    246                         // encode function type as a 2-param generic type
    247                         // TODO handle forall functions
     257                        // print function types using prototype syntax
    248258                        void previsit( FunctionType* ft ) {
    249                                 ss << "#$fn<";
     259                                ss << '[';
    250260                                ++depth;
    251                                 buildAsTuple( *visitor, from_decls( ft->returnVals ), ss );
    252                                 ss << ' ';
    253                                 buildAsTuple( *visitor, from_decls( ft->parameters ), ss );
     261                                build( *visitor, from_decls( ft->returnVals ), ss, preceded );
     262                                ss << " : ";
     263                                build( *visitor, from_decls( ft->parameters ), ss, terminated );
    254264                                --depth;
    255                                 ss << '>';
     265                                ss << ']';
    256266                                visit_children = false;
    257267                        }
     
    341351                        }
    342352
    343                         // print variable declaration as zero-arg function
     353                        // print variable declaration in prototype syntax
    344354                        PassVisitor<TypePrinter> printTy{ closed, ss };
    345355                        norefs->accept( printTy );
    346                         ss << ' ';
     356                        ss << " &";
    347357                        rp_name( name, ss );
    348358                }
     
    381391                                : closed(closed), ss(ss) {}
    382392
    383                         /// Names handled as nullary function calls
     393                        /// Names handled as name expressions
    384394                        void previsit( NameExpr* expr ) {
     395                                ss << '&';
    385396                                rp_name( expr->name, ss );
    386                                 ss << "()";
    387397                        }
    388398
     
    416426                        }
    417427
     428                        /// Already-resolved calls skipped
     429                        void previsit( ApplicationExpr* ) {
     430                                visit_children = false;
     431                        }
     432
    418433                        /// Address-of handled as operator
    419434                        void previsit( AddressExpr* expr ) {
     
    585600
    586601                void previsit( FunctionDecl *decl ) {
     602                        // skip decls with ftype parameters
     603                        for ( TypeDecl* tyvar : decl->type->forall ) {
     604                                if ( tyvar->get_kind() == TypeDecl::Ftype ) {
     605                                        visit_children = false;
     606                                        return;
     607                                }
     608                        }
     609
    587610                        // add function as declaration
    588611                        std::stringstream ss;
  • src/Makefile.am

    r48b7085 ra32346b  
    5050AM_CXXFLAGS = @HOST_FLAGS@ -Wno-deprecated -Wall -Wextra -DDEBUG_ALL -I./Parser -I$(srcdir)/Parser -I$(srcdir)/include -DYY_NO_INPUT -O2 -g -std=c++14
    5151AM_LDFLAGS  = @HOST_FLAGS@ -Xlinker -export-dynamic
     52ARFLAGS     = cr
    5253
    5354demangler_SOURCES = SymTab/demangler.cc
  • src/Makefile.in

    r48b7085 ra32346b  
    152152LIBRARIES = $(noinst_LIBRARIES)
    153153AR = ar
    154 ARFLAGS = cru
    155154AM_V_AR = $(am__v_AR_@AM_V@)
    156155am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@)
     
    582581AM_CXXFLAGS = @HOST_FLAGS@ -Wno-deprecated -Wall -Wextra -DDEBUG_ALL -I./Parser -I$(srcdir)/Parser -I$(srcdir)/include -DYY_NO_INPUT -O2 -g -std=c++14
    583582AM_LDFLAGS = @HOST_FLAGS@ -Xlinker -export-dynamic
     583ARFLAGS = cr
    584584demangler_SOURCES = SymTab/demangler.cc
    585585demangler_LDADD = libdemangle.a     # yywrap
  • src/SymTab/Demangle.cc

    r48b7085 ra32346b  
    392392                                parsers.emplace_back(Encoding::enum_t, [this](Type::Qualifiers tq) { return parseEnum(tq); });
    393393                                parsers.emplace_back(Encoding::type, [this](Type::Qualifiers tq) { return parseType(tq); });
    394                                 parsers.emplace_back(Encoding::zero, [this](Type::Qualifiers tq) { return new ZeroType(tq); });
    395                                 parsers.emplace_back(Encoding::one, [this](Type::Qualifiers tq) { return new OneType(tq); });
     394                                parsers.emplace_back(Encoding::zero, [](Type::Qualifiers tq) { return new ZeroType(tq); });
     395                                parsers.emplace_back(Encoding::one, [](Type::Qualifiers tq) { return new OneType(tq); });
    396396                        }
    397397
  • src/cfa.make

    r48b7085 ra32346b  
    66am__v_CFA_1 =
    77
    8 .cfa.o: $(CFACC) $(CFACPP)
     8.cfa.o:
    99        $(AM_V_CFA)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
    1010        $(CFACOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
  • src/main.cc

    r48b7085 ra32346b  
    172172                        if ( filename == nullptr ) filename = argv[ optind ];
    173173                        // prelude filename comes in differently
    174                         if ( libcfap ) filename = "prelude.cf";
     174                        if ( libcfap ) filename = "prelude.cfa";
    175175                        optind += 1;
    176176                } else {                                                                                // no input file name
     
    199199                        if ( ! libcfap ) {
    200200                                // read the prelude in, if not generating the cfa library
    201                                 FILE * prelude = fopen( (PreludeDirector + "/prelude.cf").c_str(), "r" );
    202                                 assertf( prelude, "cannot open prelude.cf\n" );
     201                                FILE * prelude = fopen( (PreludeDirector + "/prelude.cfa").c_str(), "r" );
     202                                assertf( prelude, "cannot open prelude.cfa\n" );
    203203                                parse( prelude, LinkageSpec::Intrinsic );
    204204
  • tests/Makefile.am

    r48b7085 ra32346b  
    2323
    2424concurrent=
     25timeouts=
    2526
    2627TEST_PY = python ${builddir}/test.py
     
    5051#----------------------------------------------------------------------------------------------------------------
    5152all-local :
    52         @+${TEST_PY} --debug=${debug}  --install=${installed} ${concurrent} ${quick_test}
     53        @+${TEST_PY} --debug=${debug}  --install=${installed} ${concurrent} ${timeouts} ${quick_test}
    5354
    5455all-tests :
    55         @+${TEST_PY} --all --debug=${debug}  --install=${installed} ${concurrent}               # '@' => do not echo command (SILENT), '+' => allows recursive make from within python program
     56        @+${TEST_PY} --debug=${debug}  --install=${installed} ${concurrent} ${timeouts} --all # '@' => do not echo command (SILENT), '+' => allows recursive make from within python program
    5657
    5758clean-local :
  • tests/Makefile.in

    r48b7085 ra32346b  
    301301quick_test = avl_test operators numericConstants expression enum array typeof cast raii/dtor-early-exit raii/init_once attributes
    302302concurrent =
     303timeouts =
    303304TEST_PY = python ${builddir}/test.py
    304305
     
    616617#----------------------------------------------------------------------------------------------------------------
    617618all-local :
    618         @+${TEST_PY} --debug=${debug}  --install=${installed} ${concurrent} ${quick_test}
     619        @+${TEST_PY} --debug=${debug}  --install=${installed} ${concurrent} ${timeouts} ${quick_test}
    619620
    620621all-tests :
    621         @+${TEST_PY} --all --debug=${debug}  --install=${installed} ${concurrent}               # '@' => do not echo command (SILENT), '+' => allows recursive make from within python program
     622        @+${TEST_PY} --debug=${debug}  --install=${installed} ${concurrent} ${timeouts} --all # '@' => do not echo command (SILENT), '+' => allows recursive make from within python program
    622623
    623624clean-local :
  • tools/cfa.nanorc

    r48b7085 ra32346b  
    22## WIP
    33
    4 syntax "cfa" "\.cfa"
     4syntax "cfa" "\.(c|h)fa"
    55
    66# Macros
     
    99# Types
    1010color green "\<(forall|trait|(o|d|f|t)type|mutex|_Bool|volatile|virtual)\>"
    11 color green "\<(float|double|bool|char|int|short|long|sizeof|enum|void|auto)\>"
    12 color green "\<(static|const|struct|union|typedef|extern|(un)?signed|inline)\>"
     11color green "\<(float|double|bool|char|int|short|long|enum|void|auto)\>"
     12color green "\<(static|const|extern|(un)?signed|inline)\>" "\<(sizeof)\>"
    1313color green "\<((s?size)|one|zero|((u_?)?int(8|16|32|64|ptr)))_t\>"
    1414
     
    1919# Control Flow Structures
    2020color brightyellow "\<(if|else|while|do|for|switch|choose|case|default)\>"
     21color brightyellow "\<(disable|enable|waitfor|when|timeout)\>"
    2122color brightyellow "\<(try|catch(Resume)?|finally)\>"
    2223
    2324# Control Flow Statements
    2425color magenta "\<(goto|return|break|continue|fallthr(u|ough)|throw(Resume)?)\>"
     26
     27# Escaped Keywords, now Identifiers.
     28color white "`\w+`"
    2529
    2630# Operator Names
Note: See TracChangeset for help on using the changeset viewer.