summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rwxr-xr-xcompiler/ccgexprs.nim5
-rwxr-xr-xcompiler/ccgtypes.nim3
-rwxr-xr-xlib/system/excpt.nim2
-rwxr-xr-xweb/index.txt3
4 files changed, 7 insertions, 6 deletions
diff --git a/compiler/ccgexprs.nim b/compiler/ccgexprs.nim
index 33c654982..2b84226d3 100755
--- a/compiler/ccgexprs.nim
+++ b/compiler/ccgexprs.nim
@@ -499,7 +499,10 @@ proc unaryArith(p: BProc, e: PNode, d: var TLoc, op: TMagic) =
 
 proc genDeref(p: BProc, e: PNode, d: var TLoc) =
   var a: TLoc
-  if mapType(e.sons[0].typ) == ctArray:
+  if mapType(e.sons[0].typ) == ctArray and
+      skipTypes(e.sons[0].typ.sons[0], abstractInst).kind != tySet:
+    # XXX the amount of hacks for C's arrays is incredible, maybe we should
+    # simply wrap them in a struct? --> Losing auto vectorization then?
     expr(p, e.sons[0], d)
   else:
     initLocExpr(p, e.sons[0], a)
diff --git a/compiler/ccgtypes.nim b/compiler/ccgtypes.nim
index c44516304..47828514e 100755
--- a/compiler/ccgtypes.nim
+++ b/compiler/ccgtypes.nim
@@ -182,8 +182,7 @@ proc getParamTypeDesc(m: BModule, t: PType, check: var TIntSet): PRope =
   if t.Kind in {tyRef, tyPtr, tyVar}:
     var b = skipTypes(t.sons[0], abstractInst)
     if b.kind == tySet and mapSetType(b) == ctArray:
-      return toRope("NU8*") 
-      # getTypeDescAux(m, b, check)
+      return getTypeDescAux(m, b, check)
   result = getTypeDescAux(m, t, check)
 
 proc genProcParams(m: BModule, t: PType, rettype, params: var PRope, 
diff --git a/lib/system/excpt.nim b/lib/system/excpt.nim
index 6ef4ca376..c309ef17e 100755
--- a/lib/system/excpt.nim
+++ b/lib/system/excpt.nim
@@ -196,7 +196,6 @@ proc raiseException(e: ref E_Base, ename: CString) {.compilerRtl.} =
   e.name = ename
   if raiseHook != nil:
     if not raiseHook(e): return
-  GC_disable() # a bad thing is an error in the GC while raising an exception
   if excHandler != nil:
     pushCurrentException(e)
     c_longjmp(excHandler.context, 1)
@@ -233,7 +232,6 @@ proc raiseException(e: ref E_Base, ename: CString) {.compilerRtl.} =
       add(buf, "]\n")
       writeToStdErr(buf)
     quitOrDebug()
-  GC_enable()
 
 proc reraiseException() {.compilerRtl.} =
   if currException == nil:
diff --git a/web/index.txt b/web/index.txt
index 1add676fd..8f1209f52 100755
--- a/web/index.txt
+++ b/web/index.txt
@@ -108,7 +108,8 @@ Version 0.8.x
 Version 0.9.0
   * closures and anonymous procs
   * recursive iterators/coroutines
-
+  * 2-phase type system for better interaction between macros, templates
+    and overloading
 
 Planned features beyond 1.0
 ===========================