This commit is contained in:
Araq
2019-08-16 13:29:58 +02:00
parent c7e77edecc
commit bebda3851f
3 changed files with 15 additions and 6 deletions

View File

@@ -65,7 +65,7 @@ proc addLocalVar(g: ModuleGraph; varSection, varInit: PNode; owner: PSym; typ: P
vpart.sons[2] = if varInit.isNil: v else: vpart[1]
varSection.add vpart
if varInit != nil:
if useShallowCopy and typeNeedsNoDeepCopy(typ):
if useShallowCopy and typeNeedsNoDeepCopy(typ) or optNimV2 in g.config.globalOptions:
varInit.add newFastAsgnStmt(newSymNode(result), v)
else:
let deepCopyCall = newNodeI(nkCall, varInit.info, 3)

View File

@@ -251,7 +251,10 @@ proc `^`*[T](fv: FlowVar[ref T]): ref T =
## Blocks until the value is available and then returns this value.
blockUntil(fv)
let src = cast[ref T](fv.data)
deepCopy result, src
when defined(nimV2):
result = src
else:
deepCopy result, src
finished(fv)
proc `^`*[T](fv: FlowVar[T]): T =
@@ -259,7 +262,10 @@ proc `^`*[T](fv: FlowVar[T]): T =
blockUntil(fv)
when T is string or T is seq:
let src = cast[T](fv.data)
deepCopy result, src
when defined(nimV2):
result = src
else:
deepCopy result, src
else:
result = fv.blob
finished(fv)

View File

@@ -136,9 +136,12 @@ else:
when TArg is void:
thrd.dataFn()
else:
var x: TArg
deepCopy(x, thrd.data)
thrd.dataFn(x)
when defined(nimV2):
thrd.dataFn(thrd.data)
else:
var x: TArg
deepCopy(x, thrd.data)
thrd.dataFn(x)
finally:
afterThreadRuns()