summary refs log tree commit diff stats
path: root/lib/core
diff options
context:
space:
mode:
authorDmitry Atamanov <data-man@users.noreply.github.com>2018-01-08 23:26:03 +0300
committerAndreas Rumpf <rumpf_a@web.de>2018-01-08 21:26:03 +0100
commitfd1883f90aecd15a3d9596c5fc45bac49b431b4b (patch)
treedea35adab44f798c90ac4fb00ae940a4c6720470 /lib/core
parente2f1f8bafa2c21b19875b3a75392c9a77ecade0b (diff)
downloadNim-fd1883f90aecd15a3d9596c5fc45bac49b431b4b.tar.gz
Fixes for new runtime (#7037)
Diffstat (limited to 'lib/core')
-rw-r--r--lib/core/allocators.nim10
-rw-r--r--lib/core/seqs.nim24
2 files changed, 28 insertions, 6 deletions
diff --git a/lib/core/allocators.nim b/lib/core/allocators.nim
index d6608a203..4edd00f36 100644
--- a/lib/core/allocators.nim
+++ b/lib/core/allocators.nim
@@ -9,7 +9,7 @@
 
 type
   Allocator* {.inheritable.} = ptr object
-    alloc*: proc (a: Allocator; size: int; alignment = 8): pointer {.nimcall.}
+    alloc*: proc (a: Allocator; size: int; alignment: int = 8): pointer {.nimcall.}
     dealloc*: proc (a: Allocator; p: pointer; size: int) {.nimcall.}
     realloc*: proc (a: Allocator; p: pointer; oldSize, newSize: int): pointer {.nimcall.}
 
@@ -22,14 +22,14 @@ proc getCurrentAllocator*(): Allocator =
 proc setCurrentAllocator*(a: Allocator) =
   currentAllocator = a
 
-proc alloc*(size: int): pointer =
+proc alloc*(size: int; alignment: int = 8): pointer =
   let a = getCurrentAllocator()
-  result = a.alloc(a, size)
+  result = a.alloc(a, size, alignment)
 
 proc dealloc*(p: pointer; size: int) =
   let a = getCurrentAllocator()
-  a.dealloc(a, size)
+  a.dealloc(a, p, size)
 
 proc realloc*(p: pointer; oldSize, newSize: int): pointer =
   let a = getCurrentAllocator()
-  result = a.realloc(a, oldSize, newSize)
+  result = a.realloc(a, p, oldSize, newSize)
diff --git a/lib/core/seqs.nim b/lib/core/seqs.nim
index 6be95a3bc..c32cf3690 100644
--- a/lib/core/seqs.nim
+++ b/lib/core/seqs.nim
@@ -7,7 +7,7 @@
 #    distribution, for details about the copyright.
 #
 
-import allocators
+import allocators, typetraits
 
 ## Default seq implementation used by Nim's core.
 type
@@ -115,3 +115,25 @@ proc `@`*[T](elems: openArray[T]): seq[T] =
       result.data[i] = elems[i]
 
 proc len*[T](x: seq[T]): int {.inline.} = x.len
+
+proc `$`*[T](x: seq[T]): string =
+  result = "@["
+  var firstElement = true
+  for i in 0..<x.len:
+    let 
+      value = x.data[i]
+    if firstElement:
+      firstElement = false
+    else:
+      result.add(", ")
+
+    when compiles(value.isNil):
+      # this branch should not be necessary
+      if value.isNil:
+        result.add "nil"
+      else:
+        result.addQuoted(value)
+    else:
+      result.addQuoted(value)
+
+  result.add("]")