.
authorclaus
Tue, 06 Jun 1995 06:01:20 +0200
changeset 358 c419f3775e7e
parent 357 82091a50055d
child 359 b8df66983eff
.
Make.proto
WeakIdDict.st
WeakIdentityDictionary.st
--- a/Make.proto	Tue Jun 06 05:56:11 1995 +0200
+++ b/Make.proto	Tue Jun 06 06:01:20 1995 +0200
@@ -1,4 +1,4 @@
-# $Header: /cvs/stx/stx/libbasic/Make.proto,v 1.30 1995-05-24 12:44:58 claus Exp $
+# $Header: /cvs/stx/stx/libbasic/Make.proto,v 1.31 1995-06-06 04:01:20 claus Exp $
 #
 # -------------- no need to change anything below ----------
 
@@ -8,7 +8,7 @@
 LIBNAME=libbasic
 
 STCOPT=$(LIBBASIC_STCOPT)
-STCLOCALOPT='-Pbasic-classes-(libbasic)' -warnGlobalAssign +optinline2 $(COMMONSYMBOLS) +sharedLibCode
+STCLOCALOPT='-Pbasic-classes-(libbasic)' -warnGlobalAssign +optinline2 $(COMMONSYMBOLS)
 
 UNCRITICALOPT=+optspace
 
@@ -41,7 +41,6 @@
 			  Symbol.$(O)                     \
 		      UIBytes.$(O)                        \
 		    DoubleArray.$(O)                      \
-		    ExtBytes.$(O)                         \
 		    FloatArray.$(O)                       \
 		Interval.$(O)                             \
 		LinkList.$(O)                             \
@@ -193,6 +192,7 @@
 True.$(O):         True.st $(BOOLEAN)
 False.$(O):        False.st $(BOOLEAN)
 
+# VMBehavior.$(O):   VMBehavior.st $(OBJECT)
 Behavior.$(O):     Behavior.st $(OBJECT)
 ClassDescr.$(O):   ClassDescr.st $(BEHAVIOR)
 Class.$(O):        Class.st $(I)/ClassDescr.H $(BEHAVIOR)
@@ -260,7 +260,6 @@
 WeakArr.$(O):      WeakArr.st $(ARRAY)
 FloatArray.$(O):   FloatArray.st $(ARRCOLL)
 DoubleArray.$(O):  DoubleArray.st $(ARRCOLL)
-ExtBytes.$(O):     ExtBytes.st $(ARRCOLL)
 ByteArray.$(O):    ByteArray.st $(ARRCOLL)
 UIBytes.$(O):      UIBytes.st $(BYTEARRAY)
 CharArray.$(O):    CharArray.st $(BYTEARRAY)
--- a/WeakIdDict.st	Tue Jun 06 05:56:11 1995 +0200
+++ b/WeakIdDict.st	Tue Jun 06 06:01:20 1995 +0200
@@ -1,6 +1,6 @@
 "
  COPYRIGHT (c) 1992 by Claus Gittinger
-              All Rights Reserved
+	      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
@@ -19,9 +19,9 @@
 
 WeakIdentityDictionary comment:'
 COPYRIGHT (c) 1992 by Claus Gittinger
-              All Rights Reserved
+	      All Rights Reserved
 
-$Header: /cvs/stx/stx/libbasic/Attic/WeakIdDict.st,v 1.6 1994-10-10 00:29:12 claus Exp $
+$Header: /cvs/stx/stx/libbasic/Attic/WeakIdDict.st,v 1.7 1995-06-06 04:01:15 claus Exp $
 '!
 
 !WeakIdentityDictionary class methodsFor:'documentation'!
@@ -29,7 +29,7 @@
 copyright
 "
  COPYRIGHT (c) 1992 by Claus Gittinger
-              All Rights Reserved
+	      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
@@ -42,7 +42,7 @@
 
 version
 "
-$Header: /cvs/stx/stx/libbasic/Attic/WeakIdDict.st,v 1.6 1994-10-10 00:29:12 claus Exp $
+$Header: /cvs/stx/stx/libbasic/Attic/WeakIdDict.st,v 1.7 1995-06-06 04:01:15 claus Exp $
 "
 !
 
@@ -76,13 +76,21 @@
     "an element (either key or value) died - rehash"
 
     | sz "{ Class:SmallInteger }" 
-      any |
+      any wasBlocked |
+
+    "
+     have to block here - dispose may be done at a low priority
+     from the background finalizer. If new views are opened in
+     the foreground, the dependency dictionary may get corrupted
+     otherwise
+    "
+    wasBlocked := OperatingSystem blockInterrupts.
 
     sz := keyArray size.
     any := false.
     1 to:sz do:[:index |
-        (keyArray at:index) isNil ifTrue:[
-           (valueArray at:index) notNil ifTrue:[
+	(keyArray at:index) isNil ifTrue:[
+	   (valueArray at:index) notNil ifTrue:[
 		"
 		 if the next slot is not nil, it could be there due
 		 to a hash collision. In this case we have to put a 
@@ -99,14 +107,16 @@
 "/                (keyArray basicAt:next) notNil ifTrue:[
 "/                    (valueArray basicAt:next) notNil ifTrue:[
 "/                        keyArray basicAt:index put:DeletedEntry
-"/		    ]
+"/                  ]
 "/                ].
 
-                valueArray at:index put:nil.
-                tally := tally - 1.
-                any := true
-            ]
-        ]
+		valueArray at:index put:nil.
+		tally := tally - 1.
+		any := true
+	    ]
+	]
     ].
-    any ifTrue:[self rehash]
+    any ifTrue:[self rehash].
+
+    wasBlocked ifTrue:[OperatingSystem unblockInterrupts].
 ! !
--- a/WeakIdentityDictionary.st	Tue Jun 06 05:56:11 1995 +0200
+++ b/WeakIdentityDictionary.st	Tue Jun 06 06:01:20 1995 +0200
@@ -1,6 +1,6 @@
 "
  COPYRIGHT (c) 1992 by Claus Gittinger
-              All Rights Reserved
+	      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
@@ -19,9 +19,9 @@
 
 WeakIdentityDictionary comment:'
 COPYRIGHT (c) 1992 by Claus Gittinger
-              All Rights Reserved
+	      All Rights Reserved
 
-$Header: /cvs/stx/stx/libbasic/WeakIdentityDictionary.st,v 1.6 1994-10-10 00:29:12 claus Exp $
+$Header: /cvs/stx/stx/libbasic/WeakIdentityDictionary.st,v 1.7 1995-06-06 04:01:15 claus Exp $
 '!
 
 !WeakIdentityDictionary class methodsFor:'documentation'!
@@ -29,7 +29,7 @@
 copyright
 "
  COPYRIGHT (c) 1992 by Claus Gittinger
-              All Rights Reserved
+	      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
@@ -42,7 +42,7 @@
 
 version
 "
-$Header: /cvs/stx/stx/libbasic/WeakIdentityDictionary.st,v 1.6 1994-10-10 00:29:12 claus Exp $
+$Header: /cvs/stx/stx/libbasic/WeakIdentityDictionary.st,v 1.7 1995-06-06 04:01:15 claus Exp $
 "
 !
 
@@ -76,13 +76,21 @@
     "an element (either key or value) died - rehash"
 
     | sz "{ Class:SmallInteger }" 
-      any |
+      any wasBlocked |
+
+    "
+     have to block here - dispose may be done at a low priority
+     from the background finalizer. If new views are opened in
+     the foreground, the dependency dictionary may get corrupted
+     otherwise
+    "
+    wasBlocked := OperatingSystem blockInterrupts.
 
     sz := keyArray size.
     any := false.
     1 to:sz do:[:index |
-        (keyArray at:index) isNil ifTrue:[
-           (valueArray at:index) notNil ifTrue:[
+	(keyArray at:index) isNil ifTrue:[
+	   (valueArray at:index) notNil ifTrue:[
 		"
 		 if the next slot is not nil, it could be there due
 		 to a hash collision. In this case we have to put a 
@@ -99,14 +107,16 @@
 "/                (keyArray basicAt:next) notNil ifTrue:[
 "/                    (valueArray basicAt:next) notNil ifTrue:[
 "/                        keyArray basicAt:index put:DeletedEntry
-"/		    ]
+"/                  ]
 "/                ].
 
-                valueArray at:index put:nil.
-                tally := tally - 1.
-                any := true
-            ]
-        ]
+		valueArray at:index put:nil.
+		tally := tally - 1.
+		any := true
+	    ]
+	]
     ].
-    any ifTrue:[self rehash]
+    any ifTrue:[self rehash].
+
+    wasBlocked ifTrue:[OperatingSystem unblockInterrupts].
 ! !