caching
authorClaus Gittinger <cg@exept.de>
Thu, 16 Nov 2000 17:22:00 +0100
changeset 994 fdfd49f4dc25
parent 993 ebcbcdd21e05
child 995 c754159d1aef
caching
SystemOrganizer.st
--- a/SystemOrganizer.st	Thu Nov 16 17:18:18 2000 +0100
+++ b/SystemOrganizer.st	Thu Nov 16 17:22:00 2000 +0100
@@ -16,7 +16,7 @@
 
 Object subclass:#SystemOrganizer
 	instanceVariableNames:'categoryArray nameSpace'
-	classVariableNames:'AllCategories'
+	classVariableNames:'AllCategories CachedOrganizerForSmalltalk'
 	poolDictionaries:''
 	category:'Kernel-Support'
 !
@@ -54,6 +54,12 @@
     "create & return a new instance of myself, to organize aNameSpace.
      All of this here is mimicri - ST/X keeps the category in the class."
 
+    (aNameSpace isNil or:[aNameSpace == Smalltalk]) ifTrue:[
+        CachedOrganizerForSmalltalk isNil ifTrue:[
+            CachedOrganizerForSmalltalk := self new nameSpace:aNameSpace.
+        ].
+        ^ CachedOrganizerForSmalltalk
+    ].
     ^ self new nameSpace:aNameSpace.
 
     "Modified: / 6.2.2000 / 20:25:50 / cg"
@@ -210,6 +216,7 @@
 !SystemOrganizer methodsFor:'change and update'!
 
 update:something with:anArgument from:changedObject
+    "/ flush cached categories ...
     categoryArray := nil.
 
     "Created: / 6.2.2000 / 20:08:52 / cg"
@@ -221,8 +228,9 @@
 nameSpace:aNameSpace
     "set the nameSpace - nil is allowed and stands for: any"
 
-    nameSpace := aNameSpace.
-    Smalltalk addDependent:self.
+    nameSpace := aNameSpace ? Smalltalk.
+    nameSpace addDependent:self.
+    nameSpace ~~ Smalltalk ifTrue:[Smalltalk addDependent:self].
 
     "
      (SystemOrganizer for:nil) organization
@@ -235,5 +243,5 @@
 !SystemOrganizer class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic3/SystemOrganizer.st,v 1.8 2000-09-03 14:44:05 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic3/SystemOrganizer.st,v 1.9 2000-11-16 16:22:00 cg Exp $'
 ! !