This commit is contained in:
Araq 2019-08-16 13:29:58 +02:00
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] vpart.sons[2] = if varInit.isNil: v else: vpart[1]
varSection.add vpart varSection.add vpart
if varInit != nil: 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) varInit.add newFastAsgnStmt(newSymNode(result), v)
else: else:
let deepCopyCall = newNodeI(nkCall, varInit.info, 3) let deepCopyCall = newNodeI(nkCall, varInit.info, 3)

View file

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

View file

@ -135,6 +135,9 @@ else:
try: try:
when TArg is void: when TArg is void:
thrd.dataFn() thrd.dataFn()
else:
when defined(nimV2):
thrd.dataFn(thrd.data)
else: else:
var x: TArg var x: TArg
deepCopy(x, thrd.data) deepCopy(x, thrd.data)