# HG changeset patch # User claus # Date 799369437 -7200 # Node ID ae624fbef977a115b93fed9932b93a402874e480 # Parent f14fc5ac11b70ad138597589b1e6156c8fd2aaf2 . diff -r f14fc5ac11b7 -r ae624fbef977 ImmutableArray.st --- a/ImmutableArray.st Mon May 01 23:40:01 1995 +0200 +++ b/ImmutableArray.st Tue May 02 01:03:57 1995 +0200 @@ -37,7 +37,7 @@ version " -$Header: /cvs/stx/stx/libbasic/ImmutableArray.st,v 1.3 1995-02-22 01:16:48 claus Exp $ +$Header: /cvs/stx/stx/libbasic/ImmutableArray.st,v 1.4 1995-05-01 23:03:57 claus Exp $ " ! @@ -69,7 +69,7 @@ creator "find the method that contains me" - Method allDerivedInstances do:[:aMethod | + Method allSubInstances do:[:aMethod | |lits| lits := aMethod literals. diff -r f14fc5ac11b7 -r ae624fbef977 Project.st --- a/Project.st Mon May 01 23:40:01 1995 +0200 +++ b/Project.st Tue May 02 01:03:57 1995 +0200 @@ -23,7 +23,7 @@ COPYRIGHT (c) 1993 by Claus Gittinger All Rights Reserved -$Header: /cvs/stx/stx/libbasic/Project.st,v 1.15 1995-03-25 22:10:09 claus Exp $ +$Header: /cvs/stx/stx/libbasic/Project.st,v 1.16 1995-05-01 23:02:41 claus Exp $ '! !Project class methodsFor:'documentation'! @@ -44,7 +44,7 @@ version " -$Header: /cvs/stx/stx/libbasic/Project.st,v 1.15 1995-03-25 22:10:09 claus Exp $ +$Header: /cvs/stx/stx/libbasic/Project.st,v 1.16 1995-05-01 23:02:41 claus Exp $ " ! @@ -160,7 +160,7 @@ ! views - ^ views + ^ views asArray ! classes @@ -186,7 +186,7 @@ ! views:aSetOfViews - views := aSetOfViews + views := WeakIdentitySet withAll:aSetOfViews ! changeSet:aChangeSet @@ -243,7 +243,7 @@ !Project methodsFor:'initialization'! initialize - views := (OrderedCollection new). + views := WeakIdentitySet new. name := 'new Project-' , NextSequential printString. NextSequential := NextSequential + 1. packageName := 'private'. diff -r f14fc5ac11b7 -r ae624fbef977 RecursionLock.st --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/RecursionLock.st Tue May 02 01:03:57 1995 +0200 @@ -0,0 +1,99 @@ +" + COPYRIGHT (c) 1995 by Claus Gittinger + All Rights Reserved + + This software is furnished under a license and may be used + only in accordance with the terms of that license and with the + inclusion of the above copyright notice. This software may not + be provided or otherwise made available to, or used by, any + other person. No title to or ownership of the software is + hereby transferred. +" + + +'From Smalltalk/X, Version:2.10.5 on 28-apr-1995 at 12:37:45 pm'! + +Object subclass:#RecursionLock + instanceVariableNames:'process sema' + classVariableNames:'' + poolDictionaries:'' + category:'Kernel-Processes' +! + +!RecursionLock class methodsFor:'documentation'! + +documentation +" + like a Semaphore for mutual exclusion, but avoids the deadlock + if a critical region is reentered by the same process again. + + example: + + |lock| + + lock := RecursionLock new. + lock critical:[ + Transcript showCr:'in lock ...'. + lock critical:[ + Transcript showCr:'again ...' + ] + ] +" + +! + +copyright +" + COPYRIGHT (c) 1995 by Claus Gittinger + All Rights Reserved + + This software is furnished under a license and may be used + only in accordance with the terms of that license and with the + inclusion of the above copyright notice. This software may not + be provided or otherwise made available to, or used by, any + other person. No title to or ownership of the software is + hereby transferred. +" + +! + +version +" +$Header: /cvs/stx/stx/libbasic/RecursionLock.st,v 1.1 1995-05-01 23:03:08 claus Exp $ +" +! ! + +!RecursionLock class methodsFor:'instance creation'! + +new + ^ self basicNew initialize + +! ! + +!RecursionLock methodsFor:'wait & signal'! + +critical:aBlock + "evaluate aBlock as a critical region, but do not block, + if this lock is already held by the current process." + + |active| + + active := Processor activeProcess. + process == active ifTrue:[ + aBlock value + ] ifFalse:[ + process := active. + [ + sema critical:aBlock + ] valueNowOrOnUnwindDo:[ + process := nil + ] + ]. +! ! + +!RecursionLock methodsFor:'private initialization'! + +initialize + sema := Semaphore forMutualExclusion +! ! +