summary refs log tree commit diff stats
path: root/compiler/ccgstmts.nim
Commit message (Collapse)AuthorAgeFilesLines
* Improve setjmp()/longjmp() performance.Reimer Behrends2014-09-251-1/+8
| | | | | | | | | | | Exception handling for the C backend used setjmp()/longjmp() unconditionally. However, on POSIX systems, these functions save and restore the signal mask, adding considerable overhead to exception handling, even where no exceptions are involved. The compiler and library now try to use either _setjmp()/_longjmp() or sigsetjmp()/siglongjmp() where possible, marked by the defines "nimRawSetjmp" and "nimSigSetjmp", respectively. The define "nimStdSetjmp" can be used to revert to setjmp()/longjmp() instead.
* Avoid unnecessary #include triggered by importc vars.Reimer Behrends2014-09-191-0/+4
| | | | | | | | | | | | | | | | | When a C variable or macro is imported via an {.importc.} var or let statement, but no definition is needed and the variable does not have an initializer part, then there is also no need to generate an #include for the associated header until and unless the variable is actually used. The header is already generated upon use, but unnecessarily also when the variable is defined. This is an issue with the posix module in particular, where a lot of unnecessary header files are being included because relevant constants are defined via importc vars, and those header files may not even be available on a given system. This patch omits the generation of the #include directive for those definitions where they aren't needed.
* fixes #1067Araq2014-09-111-0/+10
|
* fixes newly introduced bugsAraq2014-08-141-5/+4
|
* fixes #1434Araq2014-08-141-3/+13
|
* compiler prepared for the new comment handlingAraq2014-04-301-0/+1
|
* gensym'ed symbols work with lambda-lifting; closures produce objects instead ↵Araq2014-04-031-1/+1
| | | | of tuples for easier debugging
* split the inline and closure iterators into different symbol kinds for ↵Zahary Karadjov2014-03-061-1/+1
| | | | easier discrimination between them
* Fixed #688 : return in except statments. Also fixed return in finally ↵Audun Wilhelmsen2014-02-231-16/+25
| | | | statements.
* Fixed issue 391 (nested break in except-stmts)Audun Wilhelmsen2014-02-161-9/+25
|
* case consistency: cs:partial bootstraps on windowsAraq2013-12-291-8/+8
|
* case consistency: next stepsAraq2013-12-291-2/+2
|
* case consistency part 4Araq2013-12-271-27/+27
|
* case consistency part 1Araq2013-12-271-16/+16
|
* Merge branch 'master' of https://github.com/Araq/Nimrod into vm2Araq2013-12-231-1/+6
|\ | | | | | | | | Conflicts: web/news.txt
| * implemented 'injectStmt'; more debug supportAraq2013-12-161-1/+6
| |
* | computed goto now works; some progress on the new VMAraq2013-10-251-2/+17
|/
* implemented top level asm statementsAraq2013-10-071-1/+5
|
* fixes #576Araq2013-09-181-2/+3
|
* better support for GNU's assemblerAraq2013-09-031-9/+25
|
* Merge branch 'master' of github.com:Araq/NimrodAraq2013-08-221-1/+1
|\
| * work-in-progress for compiling generics in their owner moduleZahary Karadjov2013-08-191-1/+1
| |
* | fixed and documented computedGoto pragmaAraq2013-08-221-1/+4
|/
* implemented computed goto supportAraq2013-08-131-1/+60
|
* fixes #532Araq2013-08-011-0/+1
|
* fixes #501Araq2013-07-011-1/+1
|
* fixed: typoAraq2013-05-031-1/+1
|
* completed expr/stmt unificationAraq2013-05-031-122/+76
|
* revert new scope for 'if'Araq2013-05-021-1/+2
|
* tester should work again; documented (;)Araq2013-04-301-5/+7
|
* first steps to the expr/stmt unificationAraq2013-04-301-3/+2
|
* Removes executable bit for text files.Grzegorz Adam Hankiewicz2013-03-161-0/+0
|
* documented object constrs; endb works againAraq2013-03-091-17/+21
|
* preparations for a generational GCAraq2013-02-161-1/+2
|
* code cleanup for mark&sweep GCAraq2013-02-071-1/+1
|
* first version of a simple mark&sweep GC; activate with --gc:markAndSweepAraq2013-02-071-2/+11
|
* merged upstream masterZahary Karadjov2013-01-271-1/+6
|\
| * fixes #277; documentation improvementsAraq2012-12-171-0/+4
| |
| * implemented 'import except'Araq2012-11-281-1/+2
| |
* | disables the compile-time rope formatting during bootstrappingZahary Karadjov2012-11-281-22/+22
| |
* | first batch of rope code converted to `rfmt`Zahary Karadjov2012-11-281-3/+1
|/ | | | | | The results so far are inconclusive: The rope cache tries have been reduced by more than 125K (nearly 20%), but the bootstrap time seems to be ever slightly increasing (0.01s).
* next steps for first class iteratorsAraq2012-11-151-3/+5
|
* improvements for first class iteratorsAraq2012-11-151-1/+6
|
* bugfix: stack traces; first class iterators almost workingAraq2012-11-151-1/+9
|
* bugfix: closures as default param valuesZahary Karadjov2012-10-061-5/+0
|
* improved support for typedesc valuesZahary Karadjov2012-09-251-0/+1
| | | | | * can be stored in constants and variables (including in containers like sequences) * can be passed to and returned from macros
* implemented a stack trace profilerAraq2012-09-151-0/+4
|
* first steps for overloading support of passing blocks; bugfix: test results ↵Araq2012-09-111-1/+1
| | | | of 'compile' are not overwritten
* first steps to deprecate 'nil' statementAraq2012-09-091-3/+4
|
* openarray/varargs split; breaks bootstrappingAraq2012-08-161-1/+1
|