#TUNING by cg
authorClaus Gittinger <cg@exept.de>
Tue, 22 Jan 2019 17:02:27 +0100
changeset 23633 bf5b24d4ed27
parent 23632 5b8f61358650
child 23634 6d3efff0d654
#TUNING by cg class: InlineObject class definition class: InlineObject class changed: #slotNames:values:
InlineObject.st
--- a/InlineObject.st	Tue Jan 22 16:47:19 2019 +0100
+++ b/InlineObject.st	Tue Jan 22 17:02:27 2019 +0100
@@ -17,7 +17,7 @@
 
 Object subclass:#InlineObject
 	instanceVariableNames:''
-	classVariableNames:''
+	classVariableNames:'MapOfClasses'
 	poolDictionaries:''
 	category:'Kernel-Classes'
 !
@@ -90,20 +90,26 @@
     
     |subclass inst|
 
-    Class withoutUpdatingChangesDo:[
-        subclass := self 
-                        subclass:#someInlineObject
-                        instanceVariableNames:names
-                        classVariableNames:nil
-                        poolDictionaries:nil
-                        category:nil
-                        inEnvironment:nil.
-        names do:[:each |
-            subclass compile:('%1 ^ %1' bindWith:each)
-                     categorized:'accessing'.
-            subclass compile:('%1:arg %1 := arg.' bindWith:each)
-                     categorized:'accessing'.
+    MapOfClasses isNil ifTrue:[
+        MapOfClasses := Dictionary new.
+    ].
+    (subclass := MapOfClasses at:names ifAbsent:nil) isNil ifTrue:[
+        Class withoutUpdatingChangesDo:[
+            subclass := self 
+                            subclass:#someInlineObject
+                            instanceVariableNames:names
+                            classVariableNames:nil
+                            poolDictionaries:nil
+                            category:nil
+                            inEnvironment:nil.
+            names do:[:each |
+                subclass compile:('%1 ^ %1' bindWith:each)
+                         categorized:'accessing'.
+                subclass compile:('%1:arg %1 := arg.' bindWith:each)
+                         categorized:'accessing'.
+            ].
         ].
+        MapOfClasses at:names put:subclass.
     ].
     inst := (Array withAll:slotValues) changeClassTo:subclass.                
     ^ inst
@@ -113,6 +119,7 @@
     "
 
     "Created: / 21-01-2019 / 13:10:14 / Claus Gittinger"
+    "Modified: / 22-01-2019 / 17:01:42 / Claus Gittinger"
 !
 
 slotNamesAndValues:namesAndValues