97
97
key, upperBound: int
98
98
level: int
99
99
100
- const
101
- RegionHasLock = false # hasThreadSupport and defined(gcDestructors)
102
-
103
100
type
104
101
FreeCell {.final , pure .} = object
105
102
# A free cell is a pointer that has been freed, meaning it became available for reuse.
161
158
llmem: PLLChunk
162
159
currMem, maxMem, freeMem, occ: int # memory sizes (allocated from OS)
163
160
lastSize: int # needed for the case that OS gives us pages linearly
164
- when RegionHasLock :
165
- lock: SysLock
166
161
when defined (gcDestructors):
167
162
sharedFreeListBigChunks: PBigChunk # make no attempt at avoiding false sharing for now for this object field
168
163
@@ -680,12 +675,6 @@ proc getBigChunk(a: var MemRegion, size: int): PBigChunk =
680
675
sysAssert ((size and PageMask ) == 0 , " getBigChunk: unaligned chunk" )
681
676
result = findSuitableBlock (a, fl, sl)
682
677
683
- when RegionHasLock :
684
- if not a.lockActive:
685
- a.lockActive = true
686
- initSysLock (a.lock)
687
- acquireSys a.lock
688
-
689
678
if result == nil :
690
679
if size < nimMinHeapPages * PageSize :
691
680
result = requestOsChunks (a, nimMinHeapPages * PageSize )
@@ -707,16 +696,9 @@ proc getBigChunk(a: var MemRegion, size: int): PBigChunk =
707
696
708
697
incl (a, a.chunkStarts, pageIndex (result ))
709
698
dec (a.freeMem, size)
710
- when RegionHasLock :
711
- releaseSys a.lock
712
699
713
700
proc getHugeChunk (a: var MemRegion ; size: int ): PBigChunk =
714
701
result = cast [PBigChunk ](allocPages (a, size))
715
- when RegionHasLock :
716
- if not a.lockActive:
717
- a.lockActive = true
718
- initSysLock (a.lock)
719
- acquireSys a.lock
720
702
incCurrMem (a, size)
721
703
# XXX add this to the heap links. But also remove it from it later.
722
704
when false : a.addHeapLink (result , size)
@@ -728,8 +710,6 @@ proc getHugeChunk(a: var MemRegion; size: int): PBigChunk =
728
710
result .prevSize = 1
729
711
result .owner = addr a
730
712
incl (a, a.chunkStarts, pageIndex (result ))
731
- when RegionHasLock :
732
- releaseSys a.lock
733
713
734
714
proc freeHugeChunk (a: var MemRegion ; c: PBigChunk ) =
735
715
let size = c.size
@@ -794,8 +774,6 @@ else:
794
774
template untrackSize (x) = discard
795
775
796
776
proc deallocBigChunk (a: var MemRegion , c: PBigChunk ) =
797
- when RegionHasLock :
798
- acquireSys a.lock
799
777
dec a.occ, c.size
800
778
untrackSize (c.size)
801
779
sysAssert a.occ >= 0 , " rawDealloc: negative occupied memory (case B)"
@@ -804,8 +782,6 @@ proc deallocBigChunk(a: var MemRegion, c: PBigChunk) =
804
782
del (a, a.root, cast [int ](addr (c.data)))
805
783
if c.size >= HugeChunkSize : freeHugeChunk (a, c)
806
784
else : freeBigChunk (a, c)
807
- when RegionHasLock :
808
- releaseSys a.lock
809
785
810
786
when defined (gcDestructors):
811
787
template atomicPrepend (head, elem: untyped ) =
0 commit comments