init checks and 'out' parameters (#14521)

* I don't care about observable stores
* enforce explicit initializations
* cleaner code for the stdlib
* stdlib: use explicit initializations
* make tests green
* algorithm.nim: set result explicitly
* remove out parameters and bring the PR into a mergable state
* updated the changelog
This commit is contained in:
Andreas Rumpf 2020-06-23 10:53:57 +02:00 • committed by GitHub
commit da29222f86
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
53 changed files with 355 additions and 257 deletions

View file

@ -217,7 +217,7 @@ proc stackSize(stack: ptr GcStack): int {.noinline.} =
when nimCoroutines:
var pos = stack.pos
else:
var pos {.volatile.}: pointer
var pos {.volatile, noinit.}: pointer
pos = addr(pos)
if pos != nil:
@ -229,6 +229,7 @@ proc stackSize(stack: ptr GcStack): int {.noinline.} =
result = 0
proc stackSize(): int {.noinline.} =
result = 0
for stack in gch.stack.items():
result = result + stack.stackSize()
@ -303,7 +304,7 @@ when not defined(useNimRtl):
{.pop.}
proc isOnStack(p: pointer): bool =
var stackTop {.volatile.}: pointer
var stackTop {.volatile, noinit.}: pointer
stackTop = addr(stackTop)
var a = cast[ByteAddress](gch.getActiveStack().bottom)
var b = cast[ByteAddress](stackTop)