ClassBuildWarning.st
author Jan Vrany <jan.vrany@labware.com>
Thu, 25 Mar 2021 20:30:03 +0000
branchjv
changeset 25411 248600ba8fd9
parent 16426 f8a36e7fd6b1
permissions -rw-r--r--
Fix unlikely but possible race in `WeakValueDictionary` It may happen that value in `valueArray` could have been already collected by the GC but #clearDeadSlots have not yet been called. When this happened, `#at:ifAbsentPut:` returned tombstone rather than updating the dictionary with value from block. This commit fixes this by checking whether `valueArray` contain the tombstone and if so, clearing up the dead slots and restarting the operation. HTH.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
16426
f8a36e7fd6b1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     1
"{ Package: 'stx:libbasic' }"
f8a36e7fd6b1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     2
f8a36e7fd6b1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     3
Warning subclass:#ClassBuildWarning
f8a36e7fd6b1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     4
	instanceVariableNames:'className'
f8a36e7fd6b1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     5
	classVariableNames:''
f8a36e7fd6b1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     6
	poolDictionaries:''
f8a36e7fd6b1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     7
	category:'Kernel-Support'
f8a36e7fd6b1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     8
!
f8a36e7fd6b1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     9
f8a36e7fd6b1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    10
f8a36e7fd6b1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    11
!ClassBuildWarning methodsFor:'accessing'!
f8a36e7fd6b1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    12
f8a36e7fd6b1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    13
className:aSymbol
f8a36e7fd6b1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    14
    className := aSymbol.
f8a36e7fd6b1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    15
! !
f8a36e7fd6b1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    16
f8a36e7fd6b1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    17
!ClassBuildWarning class methodsFor:'documentation'!
f8a36e7fd6b1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    18
f8a36e7fd6b1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    19
version
f8a36e7fd6b1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
    ^ '$Header: /cvs/stx/stx/libbasic/ClassBuildWarning.st,v 1.1 2014-05-13 22:11:40 cg Exp $'
f8a36e7fd6b1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    21
!
f8a36e7fd6b1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    22
f8a36e7fd6b1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    23
version_CVS
f8a36e7fd6b1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    24
    ^ '$Header: /cvs/stx/stx/libbasic/ClassBuildWarning.st,v 1.1 2014-05-13 22:11:40 cg Exp $'
f8a36e7fd6b1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    25
! !
f8a36e7fd6b1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    26