fixed codegen for barriers
This commit is contained in:
parent
fbadbb399e
commit
7303c3292f
1 changed files with 7 additions and 2 deletions
|
|
@ -211,8 +211,13 @@ proc createWrapperProc(f: PNode; threadParam, argsParam: PSym;
|
||||||
varSection, call, barrier, prom: PNode;
|
varSection, call, barrier, prom: PNode;
|
||||||
spawnKind: TSpawnResult): PSym =
|
spawnKind: TSpawnResult): PSym =
|
||||||
var body = newNodeI(nkStmtList, f.info)
|
var body = newNodeI(nkStmtList, f.info)
|
||||||
|
var threadLocalBarrier: PSym
|
||||||
if barrier != nil:
|
if barrier != nil:
|
||||||
body.add callCodeGenProc("barrierEnter", barrier)
|
var varSection = newNodeI(nkVarSection, barrier.info)
|
||||||
|
threadLocalBarrier = addLocalVar(varSection, argsParam.owner,
|
||||||
|
barrier.typ, barrier)
|
||||||
|
body.add varSection
|
||||||
|
body.add callCodeGenProc("barrierEnter", threadLocalBarrier.newSymNode)
|
||||||
var threadLocalProm: PSym
|
var threadLocalProm: PSym
|
||||||
if spawnKind == srByVar:
|
if spawnKind == srByVar:
|
||||||
threadLocalProm = addLocalVar(varSection, argsParam.owner, prom.typ, prom)
|
threadLocalProm = addLocalVar(varSection, argsParam.owner, prom.typ, prom)
|
||||||
|
|
@ -244,7 +249,7 @@ proc createWrapperProc(f: PNode; threadParam, argsParam: PSym;
|
||||||
else:
|
else:
|
||||||
body.add call
|
body.add call
|
||||||
if barrier != nil:
|
if barrier != nil:
|
||||||
body.add callCodeGenProc("barrierLeave", barrier)
|
body.add callCodeGenProc("barrierLeave", threadLocalBarrier.newSymNode)
|
||||||
|
|
||||||
var params = newNodeI(nkFormalParams, f.info)
|
var params = newNodeI(nkFormalParams, f.info)
|
||||||
params.add emptyNode
|
params.add emptyNode
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue