mirror of
https://github.com/nim-lang/Nim.git
synced 2026-01-03 11:42:33 +00:00
Fixes for new runtime (#7037)
This commit is contained in:
committed by
Andreas Rumpf
parent
e2f1f8bafa
commit
fd1883f90a
@@ -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)
|
||||
|
||||
@@ -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("]")
|
||||
|
||||
Reference in New Issue
Block a user