attempt to fix DLL generation

This commit is contained in:
Araq 2012-07-18 00:02:53 +02:00
commit 83deb233ee
6 changed files with 21 additions and 22 deletions

View file

@ -819,9 +819,9 @@ proc getFileHeader(cfilenoext: string): PRope =
proc genMainProc(m: BModule) = proc genMainProc(m: BModule) =
const const
CommonMainBody = CommonMainBody =
"$1" &
"\tnim__datInit();$n" & "\tnim__datInit();$n" &
"\tsystemInit();$n" & "\tsystemInit();$n" &
"$1" &
"$2" & "$2" &
"$3" "$3"
PosixNimMain = PosixNimMain =
@ -873,7 +873,8 @@ proc genMainProc(m: BModule) =
otherMain = PosixCMain otherMain = PosixCMain
if gBreakpoints != nil: discard cgsym(m, "dbgRegisterBreakpoint") if gBreakpoints != nil: discard cgsym(m, "dbgRegisterBreakpoint")
let initStackBottomCall = if emulatedThreadVars(): "".toRope let initStackBottomCall = if emulatedThreadVars() or
platform.targetOS == osStandalone: "".toRope
else: ropecg(m, "\t#initStackBottom();$n") else: ropecg(m, "\t#initStackBottom();$n")
inc(m.labels) inc(m.labels)
appcg(m, m.s[cfsProcs], nimMain, [initStackBottomCall, appcg(m, m.s[cfsProcs], nimMain, [initStackBottomCall,

View file

@ -6,10 +6,4 @@ path="$projectPath/.."
path="$nimrod/packages/docutils" path="$nimrod/packages/docutils"
@if llvm_gcc or gcc: --define:booting
# GCC, LLVM and Visual C++ have a problem to optimize some modules.
# This is really strange.
# cgen.speed = "-O0"
@elif vcc:
# cgen.speed = ""
@end

View file

@ -67,7 +67,8 @@ proc hash*(x: Pointer): THash {.inline.} =
else: else:
result = (cast[THash](x)) shr 3 # skip the alignment result = (cast[THash](x)) shr 3 # skip the alignment
proc hash*[T: proc](x: T): THash {.inline.} = when not defined(booting):
proc hash*[T: proc](x: T): THash {.inline.} =
## efficient hashing of proc vars; closures are supported too. ## efficient hashing of proc vars; closures are supported too.
when T is "closure": when T is "closure":
result = hash(rawProc(x)) !& hash(rawEnv(x)) result = hash(rawProc(x)) !& hash(rawEnv(x))

View file

@ -1,5 +1,5 @@
var funcs: seq[proc (): int] = @[] var funcs: seq[proc (): int {.nimcall.}] = @[]
for i in 0..10: for i in 0..10:
funcs.add((proc (): int = return i * i)) funcs.add((proc (): int = return i * i))

View file

@ -1,6 +1,6 @@
discard """ discard """
file: "system.nim" file: "system.nim"
line: 637 line: 638
errormsg: "type mismatch" errormsg: "type mismatch"
""" """

View file

@ -1,6 +1,8 @@
version 0.9.0 version 0.9.0
============= =============
- fix DLLs
- fix 'bind' for templates
- implicit deref for parameter matching - implicit deref for parameter matching
- deprecate ``var x, y = 0`` as it's confusing for tuple consistency - deprecate ``var x, y = 0`` as it's confusing for tuple consistency
@ -44,6 +46,9 @@ version 0.9.XX
- make templates hygienic by default: try to gensym() everything in the 'block' - make templates hygienic by default: try to gensym() everything in the 'block'
of a template; find a better solution for gensym instead of `*ident` of a template; find a better solution for gensym instead of `*ident`
- introduce 'callsite' magic and make macros and templates the same
- better support for macros that rewrite procs
- macros need access to types and symbols
- document nimdoc properly finally - document nimdoc properly finally
- make 'clamp' a magic for the range stuff - make 'clamp' a magic for the range stuff
- implement a warning message for shadowed 'result' variable - implement a warning message for shadowed 'result' variable
@ -86,8 +91,6 @@ Library
- locale support; i18n module - locale support; i18n module
- bignums - bignums
- pdcurses bindings
Low priority Low priority
------------ ------------