Changeset a32346b
- Timestamp:
- Sep 25, 2018, 4:56:55 PM (6 years ago)
- Branches:
- ADT, aaron-thesis, arm-eh, ast-experimental, cleanup-dtors, deferred_resn, enum, forall-pointer-decay, jacob/cs343-translation, jenkins-sandbox, master, new-ast, new-ast-unique-expr, no_list, persistent-indexer, pthread-emulation, qualifiedEnum
- Children:
- 34a6b2e, a332d432
- Parents:
- 48b7085e (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. - Files:
-
- 26 edited
Legend:
- Unmodified
- Added
- Removed
-
.gitignore
r48b7085e ra32346b 38 38 libcfa/prelude/gcc-builtins.cf 39 39 libcfa/prelude/gcc-builtins.c 40 libcfa/prelude/prelude.cf 40 libcfa/prelude/prelude.cfa 41 41 libcfa/x64-debug/ 42 42 libcfa/x64-nodebug/ -
Jenkinsfile
r48b7085e ra32346b 128 128 //Run the tests from the tests directory 129 129 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 ' 132 132 } 133 133 else { -
benchmark/Makefile.am
r48b7085e ra32346b 33 33 TIME_FORMAT = "%E" 34 34 PRINT_FORMAT = %20s: #Comments needed for spacing 35 36 LIBFIBRE_DIR ?= /home/tdelisle/software/KOS/src/37 35 38 36 .NOTPARALLEL: … … 111 109 112 110 ## ========================================================================================================= 113 ctxswitch$(EXEEXT):\111 CTXSWITCH_DEPEND = \ 114 112 loop.run \ 115 113 function.run \ … … 121 119 ctxswitch-upp_coroutine.run \ 122 120 ctxswitch-upp_thread.run \ 123 -ctxswitch-kos_fibre.run \124 -ctxswitch-kos_fibre2.run \125 121 ctxswitch-goroutine.run \ 126 122 ctxswitch-java_thread.run 127 123 124 if WITH_LIBFIBRE 125 CTXSWITCH_DEPEND += \ 126 ctxswitch-kos_fibre.run \ 127 ctxswitch-kos_fibre2.run 128 129 130 ctxswitch-kos_fibre$(EXEEXT): 131 @$(CXXCOMPILE) -DBENCH_N=50000000 $(srcdir)/ctxswitch/kos_fibre.cpp -I$(LIBFIBRE_DIR) -lfibre 132 133 ctxswitch-kos_fibre2$(EXEEXT): 134 @$(CXXCOMPILE) -DBENCH_N=50000000 $(srcdir)/ctxswitch/kos_fibre2.cpp -I$(LIBFIBRE_DIR) -lfibre 135 endif 136 137 ctxswitch$(EXEEXT): $(CTXSWITCH_DEPEND) 138 128 139 ctxswitch-pthread$(EXEEXT): 129 140 @$(COMPILE) -DBENCH_N=50000000 $(srcdir)/ctxswitch/pthreads.c … … 143 154 ctxswitch-upp_thread$(EXEEXT): 144 155 @$(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) -lfibre148 149 ctxswitch-kos_fibre2$(EXEEXT):150 @$(CXXCOMPILE) -DBENCH_N=50000000 $(srcdir)/ctxswitch/kos_fibre2.cpp -I$(LIBFIBRE_DIR) -lfibre151 156 152 157 ctxswitch-goroutine$(EXEEXT): -
benchmark/Makefile.in
r48b7085e ra32346b 93 93 host_triplet = @host@ 94 94 noinst_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 95 99 subdir = benchmark 96 100 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 … … 273 277 TIME_FORMAT = "%E" 274 278 PRINT_FORMAT = %20s: #Comments needed for spacing 279 CTXSWITCH_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) 275 285 testdir = $(top_srcdir)/tests 276 286 all: all-am … … 465 475 466 476 467 .cfa.o: $(CFACC) $(CFACPP)477 .cfa.o: 468 478 $(AM_V_CFA)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ 469 479 $(CFACOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ 470 480 $(am__mv) $$depbase.Tpo $$depbase.Po 471 472 LIBFIBRE_DIR ?= /home/tdelisle/software/KOS/src/473 481 474 482 .NOTPARALLEL: … … 541 549 $(COMPILE) -DBENCH_N=500000000 fetch_add.c 542 550 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 557 ctxswitch$(EXEEXT): $(CTXSWITCH_DEPEND) 557 558 558 559 ctxswitch-pthread$(EXEEXT): … … 573 574 ctxswitch-upp_thread$(EXEEXT): 574 575 @$(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) -lfibre578 579 ctxswitch-kos_fibre2$(EXEEXT):580 @$(CXXCOMPILE) -DBENCH_N=50000000 $(srcdir)/ctxswitch/kos_fibre2.cpp -I$(LIBFIBRE_DIR) -lfibre581 576 582 577 ctxswitch-goroutine$(EXEEXT): -
configure
r48b7085e ra32346b 630 630 GREP 631 631 CPP 632 WITH_LIBFIBRE_FALSE 633 WITH_LIBFIBRE_TRUE 632 634 RANLIB 633 635 LEXLIB … … 5439 5441 5440 5442 # 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; } 5445 if ${ac_cv_lib_fibre_Fibre__yield+:} false; then : 5446 $as_echo_n "(cached) " >&6 5447 else 5448 ac_check_lib_save_LIBS=$LIBS 5449 LIBS="-lfibre $LIBS" 5450 cat 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 5457 extern "C" 5458 #endif 5459 char Fibre::yield (); 5460 int 5461 main () 5462 { 5463 return Fibre::yield (); 5464 ; 5465 return 0; 5466 } 5467 _ACEOF 5468 if ac_fn_c_try_link "$LINENO"; then : 5469 ac_cv_lib_fibre_Fibre__yield=yes 5470 else 5471 ac_cv_lib_fibre_Fibre__yield=no 5472 fi 5473 rm -f core conftest.err conftest.$ac_objext \ 5474 conftest$ac_exeext conftest.$ac_ext 5475 LIBS=$ac_check_lib_save_LIBS 5476 fi 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; } 5479 if test "x$ac_cv_lib_fibre_Fibre__yield" = xyes; then : 5480 HAVE_LIBFIBRE=1 5481 else 5482 HAVE_LIBFIBRE=0 5483 fi 5484 5485 if test "$HAVE_LIBFIBRE" -eq 1; then 5486 WITH_LIBFIBRE_TRUE= 5487 WITH_LIBFIBRE_FALSE='#' 5488 else 5489 WITH_LIBFIBRE_TRUE='#' 5490 WITH_LIBFIBRE_FALSE= 5491 fi 5492 5441 5493 5442 5494 # Checks for header files. … … 6478 6530 if test -z "${am__fastdepCCAS_TRUE}" && test -z "${am__fastdepCCAS_FALSE}"; then 6479 6531 as_fn_error $? "conditional \"am__fastdepCCAS\" was never defined. 6532 Usually this means the macro was only invoked conditionally." "$LINENO" 5 6533 fi 6534 if test -z "${WITH_LIBFIBRE_TRUE}" && test -z "${WITH_LIBFIBRE_FALSE}"; then 6535 as_fn_error $? "conditional \"WITH_LIBFIBRE\" was never defined. 6480 6536 Usually this means the macro was only invoked conditionally." "$LINENO" 5 6481 6537 fi -
configure.ac
r48b7085e ra32346b 204 204 205 205 # Checks for libraries. 206 AC_CHECK_LIB([fibre], [Fibre::yield], [HAVE_LIBFIBRE=1], [HAVE_LIBFIBRE=0]) 207 AM_CONDITIONAL([WITH_LIBFIBRE], [test "$HAVE_LIBFIBRE" -eq 1]) 206 208 207 209 # Checks for header files. -
doc/bibliography/pl.bib
r48b7085e ra32346b 701 701 % B 702 702 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 703 717 @incollection{beta:old, 704 718 keywords = {beta, patterns, virtual types}, … … 908 922 909 923 @misc{Cforall, 924 contributer = {pabuhr@plg}, 910 925 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}}, 913 928 optnote = {Accessed: 2018-01-01}, 914 929 } … … 926 941 927 942 @misc{CFAStackEvaluation, 943 contributer = {a3moss@plg}, 928 944 author = {Aaron Moss}, 929 945 title = {\textsf{C}$\mathbf{\forall}$ Stack Evaluation Programs}, … … 934 950 935 951 @article{Moss18, 936 keywords = { concurrency, C++},952 keywords = {type systems, tuples, Cforall}, 937 953 contributer = {pabuhr@plg}, 938 954 author = {Aaron Moss and Robert Schluntz and Peter A. Buhr}, … … 941 957 month = aug, 942 958 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}}, 944 960 } 945 961 … … 1417 1433 } 1418 1434 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 1419 1445 @incollection{Reppy93, 1420 1446 keywords = {ML, concurrency, continuation passing}, … … 1490 1516 month = dec, 1491 1517 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}}, 1493 1519 } 1494 1520 … … 1557 1583 } 1558 1584 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 1559 1594 @book{Andrews91:book, 1560 1595 keywords = {concurrency}, … … 1581 1616 1582 1617 @mastersthesis{Delisle18, 1618 keywords = {concurrency, Cforall}, 1619 contributer = {pabuhr@plg}, 1583 1620 author = {Thierry Delisle}, 1584 1621 title = {Concurrency in \textsf{C}$\mathbf{\forall}$}, 1585 1622 school = {School of Computer Science, University of Waterloo}, 1586 1623 year = 2018, 1587 address = {Waterloo, Ontario, Canada, N2L 3G1},1624 optaddress = {Waterloo, Ontario, Canada, N2L 3G1}, 1588 1625 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}, 1589 1637 } 1590 1638 … … 2865 2913 keywords = {concurrency, mutual exclusion, performance experiment, software solutions}, 2866 2914 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}, 2868 2916 journal = ccpe, 2869 2917 volume = 30, … … 2872 2920 month = feb, 2873 2921 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}} 2875 2923 } 2876 2924 … … 3284 3332 edition = {{S}imon {M}arlow}, 3285 3333 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}}, 3287 3335 } 3288 3336 … … 3358 3406 } 3359 3407 3360 @article{Hesselink17 ,3408 @article{Hesselink17b, 3361 3409 keywords = {concurrency, mutual exclusion, performance experiment, software solutions}, 3362 3410 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}, 3364 3412 journal = ccpe, 3365 3413 volume = 30, … … 3368 3416 month = sep, 3369 3417 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}}, 3371 3419 } 3372 3420 … … 3846 3894 3847 3895 % 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 } 3848 3907 3849 3908 @article{Duggan96, … … 4534 4593 % N 4535 4594 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 4536 4605 @article{Haddon77, 4537 4606 keywords = {monitors, nested monitor calls}, … … 4657 4726 volume = 9, 4658 4727 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}}, 4659 4734 } 4660 4735 … … 4769 4844 @misc{obj-c-book, 4770 4845 keywords = {objective-c}, 4771 contributor = { a3moss@uwaterloo.ca},4846 contributor = {pabuhr@plg}, 4772 4847 key = {Objective-C}, 4773 title= {Objective-C},4848 author = {Objective-C}, 4774 4849 publisher = {Apple Inc.}, 4775 year = 201 5,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}}, 4777 4852 optnote = {Accessed: 2018-03} 4778 4853 } … … 4784 4859 title = {{X}code 7 Release Notes}, 4785 4860 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}}, 4787 4862 optnote = {Accessed: 2017-04} 4788 4863 } … … 5284 5359 } 5285 5360 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 5286 5378 @article{Anderson90, 5287 5379 keywords = {spin locks, back off, performance}, … … 5504 5596 note = {Proceedings of the OOPSLA'89 Conference, Oct. 1--6, 1989, New Orleans, Lousiana}, 5505 5597 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}, 5506 5614 } 5507 5615 … … 5965 6073 } 5966 6074 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 5967 6088 @article{Robinson48, 5968 6089 keywords = {recursion, Ackermann function}, … … 6003 6124 } 6004 6125 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 6005 6137 @article{Euclid, 6006 6138 keywords = {Euclid}, … … 6034 6166 school = {School of Computer Science, University of Waterloo}, 6035 6167 year = 2017, 6036 address = {Waterloo, Ontario, Canada, N2L 3G1},6168 optaddress = {Waterloo, Ontario, Canada, N2L 3G1}, 6037 6169 note = {\href{https://uwspace.uwaterloo.ca/handle/10012/11830}{https://\-uwspace.uwaterloo.ca/\-handle/\-10012/\-11830}}, 6038 6170 } … … 6861 6993 contributer = {pabuhr@plg}, 6862 6994 key = {TIOBE Index}, 6863 title = {{TIOBE} Index},6995 author = {{TIOBE Index}}, 6864 6996 howpublished= {\href{http://www.tiobe.com/tiobe_index}{http://\-www.tiobe.com/\-tiobe\_index}}, 6865 6997 optnote = {Accessed: 2018-09}, … … 7001 7133 year = 1980 7002 7134 } 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 } 7003 7142 7004 7143 @article{Leroy00, … … 7136 7275 title = {Usability Challenges in Exception Handling}, 7137 7276 booktitle = {5th International Workshop on Exception Handling (WEH)}, 7138 o rganization= {16th International Symposium on the Foundations of Software Engineering (FSE 16)},7277 optorganization= {16th International Symposium on the Foundations of Software Engineering (FSE 16)}, 7139 7278 address = {Zurich, Switzerland}, 7140 7279 month = jun, … … 7280 7419 } 7281 7420 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 7282 7434 @techreport{Moss90, 7283 7435 keywords = {Swizzling, database}, … … 7344 7496 year = 1986, 7345 7497 editor = {Norman Meyrowitz}, 7346 publisher = sigplan # " 21(11)",7498 publisher = sigplan, 7347 7499 organization= {Association for Computing Machinery}, 7348 7500 address = {Portland, Oregon}, 7349 month = sep # { 29}7501 month = sep, 7350 7502 } 7351 7503 … … 7356 7508 year = 1987, 7357 7509 editor = {Norman Meyrowitz}, 7358 publisher = sigplan # " 22(12)",7510 publisher = sigplan, 7359 7511 organization= {Association for Computing Machinery}, 7360 7512 address = {Orlando, Florida}, 7361 month = oct # { 4--8}7513 month = oct, 7362 7514 } 7363 7515 … … 7368 7520 year = 1988, 7369 7521 editor = {Norman Meyrowitz}, 7370 publisher = sigplan # " 23(11)",7522 publisher = sigplan, 7371 7523 organization= {Association for Computing Machinery}, 7372 7524 address = {San Diego, California}, 7373 month = sep # { 25--30}7525 month = sep, 7374 7526 } 7375 7527 … … 7380 7532 year = 1989, 7381 7533 editor = {Norman Meyrowitz}, 7382 publisher = sigplan # " 24(10)",7534 publisher = sigplan, 7383 7535 organization= {Association for Computing Machinery}, 7384 7536 address = {New Orleans, Louisiana}, 7385 month = oct # { 1--6}7537 month = oct, 7386 7538 } 7387 7539 … … 7392 7544 year = 1990, 7393 7545 editor = {Norman Meyrowitz}, 7394 publisher = sigplan # " 25(10)",7546 publisher = sigplan, 7395 7547 organization= {Association for Computing Machinery}, 7396 7548 address = {Ottawa, Canada}, 7397 month = oct # { 21--25}7549 month = oct, 7398 7550 } 7399 7551 … … 7404 7556 year = 1991, 7405 7557 editor = {Andreas Paepcke}, 7406 publisher = sigplan # " 26(11)",7558 publisher = sigplan, 7407 7559 organization= {Association for Computing Machinery}, 7408 7560 address = {Phoenix, Arizona}, 7409 month = oct # { 6--11}7410 } 7561 month = oct, 7562 } -
doc/proposals/virtual.txt
r48b7085e ra32346b 87 87 first polymorphic parameter). 88 88 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.89 Instances of a trait are created by wrapping an existing instance of a type 90 that implements that trait. This wrapper includes all the function pointers 91 and other values required to preform the dynamic look-up. These are chosen by 92 the normal look-up rules at the point of abstraction. 93 93 94 94 One of the limitations of this design is that it does not support double … … 98 98 is also restricted, initially forbidden, see extension. 99 99 100 Ownership of the underlying structure is also a bit of a trick. Considering 101 the use cases for trait object, it is probably best to have the underlying 102 object be heap allocated and owned by the trait object. 103 100 104 Extension: Multi-parameter Virtual Traits: 101 105 … … 157 161 context, for instance if the cast occurs on the right hand side of an 158 162 assignment. 163 164 Function look-up follows the same rules as relaxed (behavioural) inheritance. 165 Traits can be upcast and down cast without losing information unless the 166 trait is cast down to a structure. Here there are two options. 167 168 Abstraction Time Binding: The more efficient and consistant with other parts 169 of CFA. Only the trait types use dynamic look-up, if converveted back into a 170 structure the normal static look-up rules find the function at compile time. 171 Casting down to a structure type can then result in the loss of a set of 172 bindings. 173 Construction Time Binding: For more consistant handling of the virtual 174 structs, they are always considered wrapped. Functions are bound to the 175 instance the moment it is constructed and remain unchanged throughout its 176 lifetime, so down casting does not lose information. 177 178 (We will have to decide between one of these two.) 159 179 160 180 Extension: Multiple Parents … … 205 225 206 226 We 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. 227 The vtables for the two types might be handled slightly differently and then 228 there is also the hierarchy data for virtual casts. 229 230 The hierarchy data is simple conceptually. A single (exactly one copy) pointer 231 for each type can act as the identity for it. The value of the pointer is 232 its parent type, with the root pointer being NULL. Additional meta-data 233 can accompany the parent pointer, such as a string name or the vtable fields. 234 235 They types of each vtable can be constructed from the definitions of the 236 traits (or internal nodes). The stand alone/base vtable is the same for both 237 kinds of inheritance. It may be argumented differently however (include parent 238 /this pointer in hierachal inheritance). 239 240 Creation of the actual vtable is tricky. For classical single implementation 241 semantics we would assemble the functions and create one vtable at compile 242 time. However, not only does this not give CFA-like behaviour, it is 243 impossible generally because types can satify assertions in different ways at 244 different times and stop satifying them. A special set of harder rules could 245 be used, instead we have decided to try creating multiple vtables for each 246 type. The different vtables will all implement the same type but not always 247 in the same way. 248 249 Storage has some issues from creation. If the contents of every vtable could 250 be determained at compile time they could all be created and stored 251 statically. However since thunks can be constructed on the stack and become 252 the best match, that isn't always possible. Those will have to be stored in 253 dynamic memory. Which means that all vtables must be stored dynamically or 254 there must be a way to determain which ones to free when the trait object is 255 destroyed. 224 256 225 257 Access has two main options: -
driver/cfa.cc
r48b7085e ra32346b 359 359 360 360 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 364 369 } // if 365 370 const char * config = debug ? "debug": "nodebug"; -
libcfa/Makefile.in
r48b7085e ra32346b 229 229 CFLAGS = @CFLAGS@ 230 230 CONFIGURATION = @CONFIGURATION@ 231 CONFIG_BUILDLIB = @CONFIG_BUILDLIB@ 231 232 CONFIG_CFAFLAGS = @CONFIG_CFAFLAGS@ 232 233 CONFIG_CFLAGS = @CONFIG_CFLAGS@ -
libcfa/configure
r48b7085e ra32346b 623 623 CFA_PREFIX 624 624 CFA_NAME 625 BUILDLIB_FALSE 626 BUILDLIB_TRUE 627 CONFIG_BUILDLIB 625 628 CONFIG_CFAFLAGS 626 629 CONFIG_CFLAGS … … 2531 2534 CONFIG_CFLAGS="-O0 -g" 2532 2535 CONFIG_CFAFLAGS="-debug" 2536 CONFIG_BUILDLIB="yes" 2533 2537 ;; 2534 2538 "nodebug" ) 2535 2539 CONFIG_CFLAGS="-O2 -s" 2536 2540 CONFIG_CFAFLAGS="-nodebug" 2541 CONFIG_BUILDLIB="yes" 2537 2542 ;; 2538 2543 "nolib" ) 2539 CONFIG_CFLAGS="" 2540 CONFIG_CFAFLAGS="" 2544 CONFIG_CFLAGS="-O2 -s" 2545 CONFIG_CFAFLAGS="-nodebug" 2546 CONFIG_BUILDLIB="no" 2541 2547 ;; 2542 2548 esac 2543 2549 2544 2550 2551 2552 2553 2554 if test "x${CONFIG_BUILDLIB}" = "xyes"; then 2555 BUILDLIB_TRUE= 2556 BUILDLIB_FALSE='#' 2557 else 2558 BUILDLIB_TRUE='#' 2559 BUILDLIB_FALSE= 2560 fi 2545 2561 2546 2562 … … 4478 4494 fi 4479 4495 4496 if test -z "${BUILDLIB_TRUE}" && test -z "${BUILDLIB_FALSE}"; then 4497 as_fn_error $? "conditional \"BUILDLIB\" was never defined. 4498 Usually this means the macro was only invoked conditionally." "$LINENO" 5 4499 fi 4480 4500 if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then 4481 4501 as_fn_error $? "conditional \"AMDEP\" was never defined. -
libcfa/configure.ac
r48b7085e ra32346b 41 41 CONFIG_CFLAGS="-O0 -g" 42 42 CONFIG_CFAFLAGS="-debug" 43 CONFIG_BUILDLIB="yes" 43 44 ;; 44 45 "nodebug" ) 45 46 CONFIG_CFLAGS="-O2 -s" 46 47 CONFIG_CFAFLAGS="-nodebug" 48 CONFIG_BUILDLIB="yes" 47 49 ;; 48 50 "nolib" ) 49 CONFIG_CFLAGS="" 50 CONFIG_CFAFLAGS="" 51 CONFIG_CFLAGS="-O2 -s" 52 CONFIG_CFAFLAGS="-nodebug" 53 CONFIG_BUILDLIB="no" 51 54 ;; 52 55 esac … … 54 57 AC_SUBST(CONFIG_CFLAGS) 55 58 AC_SUBST(CONFIG_CFAFLAGS) 59 AC_SUBST(CONFIG_BUILDLIB) 60 61 AM_CONDITIONAL([BUILDLIB], [test "x${CONFIG_BUILDLIB}" = "xyes"]) 56 62 57 63 #============================================================================== -
libcfa/prelude/Makefile.am
r48b7085e ra32346b 20 20 # put into lib for now 21 21 cfalibdir = ${CFA_LIBDIR} 22 cfalib_DATA = gcc-builtins.cf builtins.cf extras.cf prelude.cf bootloader.c 23 noinst_DATA = ../src/prelude.c 22 cfalib_DATA = gcc-builtins.cf builtins.cf extras.cf prelude.cfa bootloader.c 24 23 25 24 CC = @CFACC@ … … 44 43 ${AM_V_GEN}gcc -I${srcdir} -E ${srcdir}/prototypes.c | awk -f ${srcdir}/prototypes.awk > $@ 45 44 46 prelude.cf : prelude-gen.cc45 prelude.cfa : prelude-gen.cc 47 46 ${AM_V_GEN}${CXX} ${AM_CXXFLAGS} ${CXXFLAGS} ${AM_CFLAGS} ${<} -o prelude-gen -Wall -Wextra -O2 -g -std=c++14 48 47 @./prelude-gen > $@ … … 60 59 include $(DEPDIR)/builtins.Po 61 60 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@ 61 bootloader.c : ${srcdir}/bootloader.cf prelude.cfa extras.cf gcc-builtins.cf builtins.cf @CFACPP@ 66 62 ${AM_V_GEN}@CFACPP@ --prelude-dir=${builddir} -tpm ${srcdir}/bootloader.cf $@ # use src/cfa-cpp as not in lib until after install 67 63 … … 69 65 rm -rf $(DEPDIR) 70 66 71 MOSTLYCLEANFILES = bootloader.c builtins.cf extras.cf gcc-builtins.c gcc-builtins.cf prelude.cf 67 MOSTLYCLEANFILES = bootloader.c builtins.cf extras.cf gcc-builtins.c gcc-builtins.cf prelude.cfa 72 68 MAINTAINERCLEANFILES = ${addprefix ${libdir}/,${cfalib_DATA}} ${addprefix ${libdir}/,${lib_LIBRARIES}} -
libcfa/prelude/Makefile.in
r48b7085e ra32346b 147 147 } 148 148 am__installdirs = "$(DESTDIR)$(cfalibdir)" 149 DATA = $(cfalib_DATA) $(noinst_DATA)149 DATA = $(cfalib_DATA) 150 150 am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) 151 151 am__DIST_COMMON = $(srcdir)/Makefile.in … … 174 174 CFLAGS = @CFLAGS@ 175 175 CONFIGURATION = @CONFIGURATION@ 176 CONFIG_BUILDLIB = @CONFIG_BUILDLIB@ 176 177 CONFIG_CFAFLAGS = @CONFIG_CFAFLAGS@ 177 178 CONFIG_CFLAGS = @CONFIG_CFLAGS@ … … 263 264 # put into lib for now 264 265 cfalibdir = ${CFA_LIBDIR} 265 cfalib_DATA = gcc-builtins.cf builtins.cf extras.cf prelude.cf bootloader.c 266 noinst_DATA = ../src/prelude.c 266 cfalib_DATA = gcc-builtins.cf builtins.cf extras.cf prelude.cfa bootloader.c 267 267 AM_CFLAGS = -g -Wall -Wno-unused-function @ARCH_FLAGS@ @CONFIG_CFLAGS@ 268 268 AM_CFAFLAGS = @CONFIG_CFAFLAGS@ 269 MOSTLYCLEANFILES = bootloader.c builtins.cf extras.cf gcc-builtins.c gcc-builtins.cf prelude.cf 269 MOSTLYCLEANFILES = bootloader.c builtins.cf extras.cf gcc-builtins.c gcc-builtins.cf prelude.cfa 270 270 MAINTAINERCLEANFILES = ${addprefix ${libdir}/,${cfalib_DATA}} ${addprefix ${libdir}/,${lib_LIBRARIES}} 271 271 all: all-am … … 499 499 ${AM_V_GEN}gcc -I${srcdir} -E ${srcdir}/prototypes.c | awk -f ${srcdir}/prototypes.awk > $@ 500 500 501 prelude.cf : prelude-gen.cc501 prelude.cfa : prelude-gen.cc 502 502 ${AM_V_GEN}${CXX} ${AM_CXXFLAGS} ${CXXFLAGS} ${AM_CFLAGS} ${<} -o prelude-gen -Wall -Wextra -O2 -g -std=c++14 503 503 @./prelude-gen > $@ … … 515 515 include $(DEPDIR)/builtins.Po 516 516 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@ 517 bootloader.c : ${srcdir}/bootloader.cf prelude.cfa extras.cf gcc-builtins.cf builtins.cf @CFACPP@ 521 518 ${AM_V_GEN}@CFACPP@ --prelude-dir=${builddir} -tpm ${srcdir}/bootloader.cf $@ # use src/cfa-cpp as not in lib until after install 522 519 -
libcfa/prelude/prelude-gen.cc
r48b7085e ra32346b 142 142 143 143 int 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; 145 145 cout << "trait sized(dtype T) {};" << endl; 146 146 -
libcfa/src/Makefile.am
r48b7085e ra32346b 16 16 17 17 # create object files in directory with source files 18 AUTOMAKE_OPTIONS = subdir-objects18 AUTOMAKE_OPTIONS = foreign subdir-objects 19 19 ARFLAGS = cr 20 20 … … 24 24 lib_LIBRARIES = libcfa.a 25 25 26 VPATH += :../prelude 27 26 28 # AM_CFLAGS for all cfa source 27 29 # AM_CFAFLAGS for only cfa source 28 30 # use -no-include-stdhdr to prevent rebuild cycles 29 31 # The built sources must not depend on the installed headers 30 AM_CFAFLAGS = -quiet -in-tree - imacros prelude.c -I$(srcdir)/stdhdr @CONFIG_CFAFLAGS@32 AM_CFAFLAGS = -quiet -in-tree -I$(srcdir)/stdhdr @CONFIG_CFAFLAGS@ 31 33 AM_CFLAGS = -g -Wall -Wno-unused-function @ARCH_FLAGS@ @CONFIG_CFLAGS@ 32 34 AM_CCASFLAGS = -g -Wall -Wno-unused-function @ARCH_FLAGS@ @CONFIG_CFLAGS@ … … 34 36 35 37 #---------------------------------------------------------------------------------------------------------------- 38 if BUILDLIB 36 39 headers = fstream.hfa iostream.hfa iterator.hfa limits.hfa rational.hfa time.hfa stdlib.hfa common.hfa \ 37 40 containers/maybe.hfa containers/pair.hfa containers/result.hfa containers/vector.hfa 41 42 headers_nosrc = math.hfa gmp.hfa time_t.hfa bits/align.hfa bits/containers.hfa bits/defs.hfa bits/debug.hfa bits/locks.hfa 38 43 39 44 # not all platforms support concurrency, add option do disable it 40 45 headers += concurrency/coroutine.hfa concurrency/thread.hfa concurrency/kernel.hfa concurrency/monitor.hfa concurrency/mutex.hfa 41 46 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 47 headers_nosrc += concurrency/invoke.h 48 49 libsrc = startup.cfa interpose.cfa bits/debug.cfa assert.cfa exception.c virtual.c heap.cfa ${headers:.hfa=.cfa} 45 50 46 51 # not all platforms support concurrency, add option do disable it 47 52 libsrc += concurrency/CtxSwitch-@ARCHITECTURE@.S concurrency/alarm.cfa concurrency/invoke.c concurrency/preemption.cfa 53 else 54 headers = 55 headers_nosrc = 56 libsrc = 57 endif 58 48 59 49 60 #---------------------------------------------------------------------------------------------------------------- 50 61 # add dependency to cfa-cpp so all libraries are rebuilt with new translator 51 ${libobjs} : ${cfalib_DATA} 62 #@CFACC@ @CFACPP@ prelude.cfa 52 63 53 libcfa_a_SOURCES = ${libsrc} 64 # add dependency of cfa files 65 libobjs = $(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 70 libdeps = $(join \ 71 $(addsuffix $(DEPDIR)/ , $(dir $(libobjs) ) ), \ 72 $(notdir ${libobjs:.o=.Po}) \ 73 ) 74 75 -include $(libdeps) 76 77 prelude.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 #---------------------------------------------------------------------------------------------------------------- 83 libcfa_a_SOURCES = prelude.cfa ${libsrc} 54 84 55 85 stdhdr = ${shell find ${srcdir}/stdhdr -type f -printf "%p "} 56 86 57 87 cfa_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 88 nobase_cfa_include_HEADERS = ${stdhdr} ${headers} ${headers_nosrc} 72 89 73 90 #---------------------------------------------------------------------------------------------------------------- 74 91 maintainer-clean-local: 75 92 -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
r48b7085e ra32346b 19 19 20 20 21 VPATH = @srcdir@22 21 am__is_gnu_make = { \ 23 22 if test -z '$(MAKELEVEL)'; then \ … … 97 96 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ 98 97 $(ACLOCAL_M4) 99 DIST_COMMON = $(srcdir)/Makefile.am $(nobase_cfa_include_HEADERS)\100 $(am__ DIST_COMMON)98 DIST_COMMON = $(srcdir)/Makefile.am \ 99 $(am__nobase_cfa_include_HEADERS_DIST) $(am__DIST_COMMON) 101 100 mkinstalldirs = $(install_sh) -d 102 101 CONFIG_CLEAN_FILES = … … 138 137 libcfa_a_AR = $(AR) $(ARFLAGS) 139 138 libcfa_a_LIBADD = 139 am__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 140 149 am__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) 171 am_libcfa_a_OBJECTS = prelude.$(OBJEXT) $(am__objects_2) 157 172 libcfa_a_OBJECTS = $(am_libcfa_a_OBJECTS) 158 173 AM_V_P = $(am__v_P_@AM_V@) … … 191 206 am__v_CCLD_1 = 192 207 SOURCES = $(libcfa_a_SOURCES) 193 DIST_SOURCES = $( libcfa_a_SOURCES)208 DIST_SOURCES = $(am__libcfa_a_SOURCES_DIST) 194 209 am__can_run_installinfo = \ 195 210 case $$AM_UPDATE_INFO_DIR in \ … … 197 212 *) (install-info --version) >/dev/null 2>&1;; \ 198 213 esac 214 am__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 199 223 HEADERS = $(nobase_cfa_include_HEADERS) 200 224 am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) … … 220 244 $(top_srcdir)/./automake/depcomp 221 245 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) 246 VPATH = @srcdir@ :../prelude 222 247 ACLOCAL = @ACLOCAL@ 223 248 AMTAR = @AMTAR@ … … 243 268 CFLAGS = @CFLAGS@ 244 269 CONFIGURATION = @CONFIGURATION@ 270 CONFIG_BUILDLIB = @CONFIG_BUILDLIB@ 245 271 CONFIG_CFAFLAGS = @CONFIG_CFAFLAGS@ 246 272 CONFIG_CFLAGS = @CONFIG_CFLAGS@ … … 328 354 329 355 # create object files in directory with source files 330 AUTOMAKE_OPTIONS = subdir-objects356 AUTOMAKE_OPTIONS = foreign subdir-objects 331 357 ARFLAGS = cr 332 358 CFACOMPILE = $(CFACC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CFAFLAGS) $(CFAFLAGS) $(AM_CFLAGS) $(CFLAGS) … … 341 367 # use -no-include-stdhdr to prevent rebuild cycles 342 368 # The built sources must not depend on the installed headers 343 AM_CFAFLAGS = -quiet -in-tree - imacros prelude.c -I$(srcdir)/stdhdr @CONFIG_CFAFLAGS@369 AM_CFAFLAGS = -quiet -in-tree -I$(srcdir)/stdhdr @CONFIG_CFAFLAGS@ 344 370 AM_CFLAGS = -g -Wall -Wno-unused-function @ARCH_FLAGS@ @CONFIG_CFLAGS@ 345 371 AM_CCASFLAGS = -g -Wall -Wno-unused-function @ARCH_FLAGS@ @CONFIG_CFLAGS@ 372 @BUILDLIB_FALSE@headers = 346 373 347 374 #---------------------------------------------------------------------------------------------------------------- 348 375 349 376 # 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 = 357 390 358 391 # 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 404 libobjs = $(addsuffix .o, $(basename $(filter %.cfa,$(libsrc)))) 405 406 # .deps inclusion is not done automatically by automake for new languages 407 libdeps = $(join \ 408 $(addsuffix $(DEPDIR)/ , $(dir $(libobjs) ) ), \ 409 $(notdir ${libobjs:.o=.Po}) \ 410 ) 411 412 413 #---------------------------------------------------------------------------------------------------------------- 414 libcfa_a_SOURCES = prelude.cfa ${libsrc} 364 415 stdhdr = ${shell find ${srcdir}/stdhdr -type f -printf "%p "} 365 416 cfa_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 417 nobase_cfa_include_HEADERS = ${stdhdr} ${headers} ${headers_nosrc} 380 418 all: all-am 381 419 … … 506 544 507 545 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/exception.Po@am__quote@ 508 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/prelude.Po@am__quote@509 546 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/virtual.Po@am__quote@ 510 547 @AMDEP_TRUE@@am__include@ @am__quote@concurrency/$(DEPDIR)/CtxSwitch-@ARCHITECTURE@.Po@am__quote@ … … 676 713 fi 677 714 mostlyclean-generic: 678 -test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)679 715 680 716 clean-generic: … … 784 820 785 821 786 .cfa.o: $(CFACC) $(CFACPP)822 .cfa.o: 787 823 $(AM_V_CFA)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ 788 824 $(CFACOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ 789 825 $(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 830 prelude.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 ${@} 794 832 795 833 #---------------------------------------------------------------------------------------------------------------- … … 797 835 -rm -rf ${CFA_INCDIR} ${CFA_LIBDIR} 798 836 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 799 841 # Tell versions [3.59,3.63) of GNU make to not export all variables. 800 842 # Otherwise a system limit (for SysV at least) may be exceeded. -
src/CodeTools/ResolvProtoDump.cc
r48b7085e ra32346b 196 196 } 197 197 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); 200 202 } 201 203 202 204 /// ensures type inst names are uppercase 203 205 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); 206 214 } 207 215 … … 219 227 void previsit( BasicType* bt ) { ss << (int)bt->get_kind(); } 220 228 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 227 238 void previsit( ArrayType* at ) { 228 ss << "#$ arr<";239 ss << "#$ptr<"; 229 240 ++depth; 230 241 at->base->accept( *visitor ); … … 244 255 } 245 256 246 // encode function type as a 2-param generic type 247 // TODO handle forall functions 257 // print function types using prototype syntax 248 258 void previsit( FunctionType* ft ) { 249 ss << "#$fn<";259 ss << '['; 250 260 ++depth; 251 build AsTuple( *visitor, from_decls( ft->returnVals ), ss);252 ss << ' ';253 build AsTuple( *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 ); 254 264 --depth; 255 ss << ' >';265 ss << ']'; 256 266 visit_children = false; 257 267 } … … 341 351 } 342 352 343 // print variable declaration as zero-arg function353 // print variable declaration in prototype syntax 344 354 PassVisitor<TypePrinter> printTy{ closed, ss }; 345 355 norefs->accept( printTy ); 346 ss << ' ';356 ss << " &"; 347 357 rp_name( name, ss ); 348 358 } … … 381 391 : closed(closed), ss(ss) {} 382 392 383 /// Names handled as n ullary function calls393 /// Names handled as name expressions 384 394 void previsit( NameExpr* expr ) { 395 ss << '&'; 385 396 rp_name( expr->name, ss ); 386 ss << "()";387 397 } 388 398 … … 416 426 } 417 427 428 /// Already-resolved calls skipped 429 void previsit( ApplicationExpr* ) { 430 visit_children = false; 431 } 432 418 433 /// Address-of handled as operator 419 434 void previsit( AddressExpr* expr ) { … … 585 600 586 601 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 587 610 // add function as declaration 588 611 std::stringstream ss; -
src/Makefile.am
r48b7085e ra32346b 50 50 AM_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 51 51 AM_LDFLAGS = @HOST_FLAGS@ -Xlinker -export-dynamic 52 ARFLAGS = cr 52 53 53 54 demangler_SOURCES = SymTab/demangler.cc -
src/Makefile.in
r48b7085e ra32346b 152 152 LIBRARIES = $(noinst_LIBRARIES) 153 153 AR = ar 154 ARFLAGS = cru155 154 AM_V_AR = $(am__v_AR_@AM_V@) 156 155 am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@) … … 582 581 AM_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 583 582 AM_LDFLAGS = @HOST_FLAGS@ -Xlinker -export-dynamic 583 ARFLAGS = cr 584 584 demangler_SOURCES = SymTab/demangler.cc 585 585 demangler_LDADD = libdemangle.a # yywrap -
src/SymTab/Demangle.cc
r48b7085e ra32346b 392 392 parsers.emplace_back(Encoding::enum_t, [this](Type::Qualifiers tq) { return parseEnum(tq); }); 393 393 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); }); 396 396 } 397 397 -
src/cfa.make
r48b7085e ra32346b 6 6 am__v_CFA_1 = 7 7 8 .cfa.o: $(CFACC) $(CFACPP)8 .cfa.o: 9 9 $(AM_V_CFA)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ 10 10 $(CFACOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -
src/main.cc
r48b7085e ra32346b 172 172 if ( filename == nullptr ) filename = argv[ optind ]; 173 173 // prelude filename comes in differently 174 if ( libcfap ) filename = "prelude.cf ";174 if ( libcfap ) filename = "prelude.cfa"; 175 175 optind += 1; 176 176 } else { // no input file name … … 199 199 if ( ! libcfap ) { 200 200 // 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" ); 203 203 parse( prelude, LinkageSpec::Intrinsic ); 204 204 -
tests/Makefile.am
r48b7085e ra32346b 23 23 24 24 concurrent= 25 timeouts= 25 26 26 27 TEST_PY = python ${builddir}/test.py … … 50 51 #---------------------------------------------------------------------------------------------------------------- 51 52 all-local : 52 @+${TEST_PY} --debug=${debug} --install=${installed} ${concurrent} ${ quick_test}53 @+${TEST_PY} --debug=${debug} --install=${installed} ${concurrent} ${timeouts} ${quick_test} 53 54 54 55 all-tests : 55 @+${TEST_PY} -- all --debug=${debug} --install=${installed} ${concurrent}# '@' => do not echo command (SILENT), '+' => allows recursive make from within python program56 @+${TEST_PY} --debug=${debug} --install=${installed} ${concurrent} ${timeouts} --all # '@' => do not echo command (SILENT), '+' => allows recursive make from within python program 56 57 57 58 clean-local : -
tests/Makefile.in
r48b7085e ra32346b 301 301 quick_test = avl_test operators numericConstants expression enum array typeof cast raii/dtor-early-exit raii/init_once attributes 302 302 concurrent = 303 timeouts = 303 304 TEST_PY = python ${builddir}/test.py 304 305 … … 616 617 #---------------------------------------------------------------------------------------------------------------- 617 618 all-local : 618 @+${TEST_PY} --debug=${debug} --install=${installed} ${concurrent} ${ quick_test}619 @+${TEST_PY} --debug=${debug} --install=${installed} ${concurrent} ${timeouts} ${quick_test} 619 620 620 621 all-tests : 621 @+${TEST_PY} -- all --debug=${debug} --install=${installed} ${concurrent}# '@' => do not echo command (SILENT), '+' => allows recursive make from within python program622 @+${TEST_PY} --debug=${debug} --install=${installed} ${concurrent} ${timeouts} --all # '@' => do not echo command (SILENT), '+' => allows recursive make from within python program 622 623 623 624 clean-local : -
tools/cfa.nanorc
r48b7085e ra32346b 2 2 ## WIP 3 3 4 syntax "cfa" "\. cfa"4 syntax "cfa" "\.(c|h)fa" 5 5 6 6 # Macros … … 9 9 # Types 10 10 color 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)\>"11 color green "\<(float|double|bool|char|int|short|long|enum|void|auto)\>" 12 color green "\<(static|const|extern|(un)?signed|inline)\>" "\<(sizeof)\>" 13 13 color green "\<((s?size)|one|zero|((u_?)?int(8|16|32|64|ptr)))_t\>" 14 14 … … 19 19 # Control Flow Structures 20 20 color brightyellow "\<(if|else|while|do|for|switch|choose|case|default)\>" 21 color brightyellow "\<(disable|enable|waitfor|when|timeout)\>" 21 22 color brightyellow "\<(try|catch(Resume)?|finally)\>" 22 23 23 24 # Control Flow Statements 24 25 color magenta "\<(goto|return|break|continue|fallthr(u|ough)|throw(Resume)?)\>" 26 27 # Escaped Keywords, now Identifiers. 28 color white "`\w+`" 25 29 26 30 # Operator Names
Note: See TracChangeset
for help on using the changeset viewer.