mirror of
https://github.com/nim-lang/Nim.git
synced 2026-08-24 15:41:43 +00:00
YRC improvements: wip
This commit is contained in:
@@ -46,16 +46,19 @@ when defined(gcYrc):
|
||||
|
||||
template yrcCollectorLock(body: untyped) =
|
||||
if lockState == HasMutatorLock: releaseMutatorLock()
|
||||
let hadToAcquire = lockState < HasCollectorLock
|
||||
let prevState = lockState
|
||||
let hadToAcquire = prevState < HasCollectorLock
|
||||
if hadToAcquire:
|
||||
acquireWrite(gYrcGlobalLock)
|
||||
lockState = HasCollectorLock
|
||||
lockState = HasCollectorLock
|
||||
# else: keep lockState as-is (could be Collecting)
|
||||
try:
|
||||
body
|
||||
finally:
|
||||
if hadToAcquire:
|
||||
releaseWrite(gYrcGlobalLock)
|
||||
lockState = HasNoLock
|
||||
lockState = prevState
|
||||
|
||||
else:
|
||||
template yrcMutatorLock*(body: untyped) =
|
||||
body
|
||||
|
||||
Reference in New Issue
Block a user