Commit Graph

189 Commits

Author SHA1 Message Date
Araq
8ef66b973d first attempt to fix 'a[i]' handling in generics 2015-09-12 10:55:28 +02:00
Araq
ffe51966b9 fixes a critical codegen bug triggered by .async 2015-09-10 10:50:29 +02:00
Yuriy Glukhov
c42b05adb4 Fixed --debugger:on option. Removed c_line from termios. 2015-08-12 12:04:26 +03:00
Araq
54fdeb4f76 gc:none works again 2015-07-26 22:03:52 +02:00
Araq
6b00160938 fixes #3134 2015-07-18 17:48:01 +02:00
Adam Strzelecki
00366cb8d4 Turn loadDynamicLib msg into hintDependency 2015-07-03 14:05:00 +02:00
Araq
54a374a828 .header pragma now supports preprocessor directives 2015-07-01 02:15:21 +02:00
Adam Strzelecki
3d266433a7 securehash: Keep module name consistent
1. All other modules don't use underscore, why this should be different?

2. Wrap some imports to 80 column
2015-06-09 22:20:05 +02:00
Andreas Rumpf
25a1987517 Merge pull request #2780 from flaviut/cleanup-crc
Use SHA1 instead of CRC
2015-06-09 15:10:21 +02:00
Araq
706080dcbd fixes 'noreturn' regression for Visual C++ 2015-06-06 11:59:34 +02:00
Flaviu Tamas
4873db4c72 Rename crc module to "secure_hash" 2015-05-23 13:17:19 -04:00
def
4a2a0894ae Implicitly assume compilers to know naked and noreturn attributes 2015-05-07 22:31:45 +02:00
def
78c26cbf18 Distinguish only between __declspec and __attribute__ 2015-05-05 20:35:43 +02:00
def
a9fe618756 Pass noReturn pragma to C code.
With GCC and Clang this generates __attribute__((noreturn)) in the
function declaration. (both tested) With VCC __declspec(noreturn) is
used.
2015-05-05 00:02:09 +02:00
Andreas Rumpf
cb1c621a05 Merge pull request #2426 from def-/fix-1460
Fix #1460
2015-04-09 09:36:18 +02:00
def
39049e151f Get rid of deprecation warnings 2015-04-07 15:47:18 +02:00
Jacek Sieka
c40249cd43 compiler_ropes: ropeToStr -> $ 2015-04-01 22:32:15 +08:00
def
07351d5f37 Initialize c compiler variables later ...
... so that symbols such as "cpp" are defined

Fixes #1460
2015-03-28 15:07:55 +01:00
Araq
5641be51c1 codegen doesn't produce line tracing commands anymore; fixes #1344 2015-03-21 20:38:27 +01:00
Araq
910ef7b2d1 'constructor' pragma for C++ support 2015-03-18 11:42:37 +01:00
Araq
1fc590b6ea don't generate memset calls for C++ objects 2015-03-18 11:42:36 +01:00
Federico Ceratto
657dca5c3b Fix typos 2015-02-15 16:20:32 +00:00
Araq
74c6c8c903 compiler distinguishes between 2 different 'var' types for C++ interop; code cleanups 2015-02-07 10:48:07 +01:00
Araq
e84834db79 lots of C++ codegen improvements 2015-02-07 10:48:07 +01:00
Araq
e75e421912 C++ support: codegen generates C++'s references and avoids copies 2015-02-04 00:52:45 +01:00
Araq
6004280522 preparations for C++ template support 2015-01-23 00:36:58 +01:00
Guillaume Gelin
3119fe087d Happy new year! 2015-01-06 15:26:33 +01:00
Araq
c2b223688d fixes #1539 2014-11-27 09:41:36 +01:00
Araq
83c655266d more robust against unknown line info 2014-11-22 23:09:50 +01:00
Araq
326bdae8ca fixes #837 2014-11-21 02:26:49 +01:00
Araq
37cc9b2226 fixes #1181 2014-11-13 19:07:27 +01:00
Araq
af84f754b0 proper fix for stack initialization and threadvar emulation 2014-11-11 09:55:31 +01:00
Reimer Behrends
ead00d2328 Properly initialize the stack with emulated thread variables. 2014-11-06 02:09:51 +01:00
Araq
fc47c0edc7 Merge branch 'devel' of https://github.com/Araq/Nimrod into bigbreak
Conflicts:
	lib/impure/db_postgres.nim
	lib/pure/os.nim
	lib/wrappers/postgres.nim
2014-10-04 19:40:23 +02:00
Araq
e65c296bcc implemented mixed mode codegen 2014-10-03 01:21:35 +02:00
Reimer Behrends
f99c40f61b Improve setjmp()/longjmp() performance.
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.
2014-09-25 23:29:02 +02:00
Araq
7916b1f9aa implemented 'guard' annotation 2014-09-21 18:39:00 +02:00
Araq
bf557a7cdb added nimfix tool 2014-09-05 01:16:48 +02:00
Araq
2781fea9e2 Nimrod renamed to Nim 2014-08-28 09:38:14 +02:00
Araq
df172806ea big rename 2014-08-28 00:24:52 +02:00
Andreas Rumpf
d8f6a2adcb Merge pull request #1481 from rbehrends/fix-stackscan2
Fix stack bottom initialization for non-main modules.
2014-08-14 09:16:26 +02:00
Reimer Behrends
d59b9a2168 Fix stack bottom initialization for non-main modules.
Because PreMain() was now called before the new stack bottom
initialization, it still relied on the old version of initStackBottom(),
which may not handle the top few words of the stack correctly. This
patch also sets the stack bottom in PreMain() using the new approach.
2014-08-14 03:09:39 +02:00
Araq
c812a616b2 Merge branch 'devel' of https://github.com/Araq/Nimrod into devel 2014-08-14 02:44:53 +02:00
Reimer Behrends
a772105e7d Fixed stack bottom initialization for DLLs. 2014-08-14 02:10:28 +02:00
Araq
27b9d10570 Merge branch 'devel' of https://github.com/Araq/Nimrod into devel 2014-08-14 00:02:39 +02:00
Araq
f3d530e482 fixes #1434 2014-08-14 00:02:24 +02:00
Andreas Rumpf
1d19c9525e Merge pull request #1400 from rbehrends/fix-stackscan
More robust implementation for finding the beginning of the stack.
2014-08-13 20:17:16 +02:00
Araq
9673e4f2df progress on deepCopy 2014-08-01 23:40:48 +02:00
Reimer Behrends
15734009ca More robust implementation for finding the beginning of the stack.
This patch inserts an extra stack frame above the function that
calls the actual Nimrod code and ensures that a reference to this
frame is stored as the stack bottom.
2014-07-23 03:20:50 +02:00
Reimer Behrends
55e7d91b31 Fix generation of package-dependent init names.
The code incorrectly used relative instead of absolute paths to
see if *.babel files could be found, which could result in them
not being located properly.

Also added an underscore between the package and the module name
for package_moduleInit() and package_moduleDatInit() so that there
won't be spurious conflicts, e.g. for package A and module BC vs.
package AB and module C.
2014-06-25 00:42:55 +02:00