Class.st
changeset 880 e1453c16fe1b
parent 877 63ebb325ed20
child 881 eb44cdaa19af
--- a/Class.st	Thu Jan 18 01:28:17 1996 +0100
+++ b/Class.st	Thu Jan 18 01:43:04 1996 +0100
@@ -966,7 +966,7 @@
      However, the superclass chain is not stored - at load time, that must
      be either present or autoloadable."
 
-    |nSel s|
+    |nSel s selectors|
 
     stream nextPut: manager codeForClass.
 
@@ -1005,39 +1005,39 @@
 
     "/ store
     "/   number of class methods
-    (nSel := self class selectorArray size) storeBinaryOn:stream manager:manager.
+    selectors := self class selectorArray.
+    selectors storeBinaryOn:stream manager:manager.
 
     "/ store
     "/   class methods
+    nSel := selectors size.
     1 to:nSel do:[:i |
-	|sel m|
-
-	sel := self class selectorArray at:i.
+	|m|
+
 	m := self class methodArray at:i.
 	m isLazyMethod ifTrue:[
-	    m := m asRealMethod
+	    m := m makeRealMethod
 	].
 
-	sel storeBinaryOn:stream manager:manager.
 	m storeFullBinaryDefinitionOn:stream manager:manager
     ].
 
     "/ store
     "/   number of inst methods
-    (nSel := selectorArray size) storeBinaryOn:stream manager:manager.
+    
+    selectorArray storeBinaryOn:stream manager:manager.
 
     "/ store
     "/   inst methods
+    nSel := selectorArray size.
     1 to:nSel do:[:i |
-	|sel m|
-
-	sel := selectorArray at:i.
+	|m|
+
 	m := methodArray at:i.
 	m isLazyMethod ifTrue:[
-	    m := m asRealMethod
+	    m := m makeRealMethod
 	].
 
-	sel storeBinaryOn:stream manager:manager.
 	m storeFullBinaryDefinitionOn:stream manager:manager
     ].
 
@@ -1084,7 +1084,9 @@
 
     superClass := Smalltalk at:superclassName ifAbsent:nil.
     superClass notNil ifTrue:[
+('loading superclass: ' ,  superclassName ) printNL.
 	superClass autoload.
+	superClass := Smalltalk at:superclassName.
     ].
 
     name := manager nextObject.
@@ -1097,6 +1099,8 @@
     classInstVars := manager nextObject.
     classInstVars isNil ifTrue:[classInstVars := ''].
 
+('create class: ' ,  name ) printNL.
+
     newClass := superClass
                     subclass:name asSymbol
                     instanceVariableNames:instvars
@@ -1115,8 +1119,8 @@
     "/ retrieve
     "/   number of class methods
 
-    nSel := manager nextObject.
-    cselectors := Array new:nSel.
+    cselectors := manager nextObject.
+    nSel := cselectors size.
     cmethods := Array new:nSel.
 
     "/ retrieve
@@ -1124,17 +1128,15 @@
     1 to:nSel do:[:i |
 	|m|
 
-	sel := manager nextObject.
 	m := Method binaryFullDefinitionFrom:stream manager:manager.
 	cmethods at:i put:m.
-	cselectors at:i put:sel.
     ].
 
     "/ retrieve
     "/   number of inst methods
 
-    nSel := manager nextObject.
-    selectors := Array new:nSel.
+    selectors := manager nextObject.
+    nSel := selectors size.
     methods := Array new:nSel.
 
     "/ retrieve
@@ -1142,10 +1144,8 @@
     1 to:nSel do:[:i |
 	|m|
 
-	sel := manager nextObject.
 	m := Method binaryFullDefinitionFrom:stream manager:manager.
 	methods at:i put:m.
-	selectors at:i put:sel.
     ].
 
     superClass isNil ifTrue:[^ nil].
@@ -1913,6 +1913,26 @@
     "Modified: 10.12.1995 / 16:31:50 / cg"
 !
 
+binaryFileOut
+    |baseName fileName aStream|
+
+    baseName := (Smalltalk fileNameForClass:self name).
+    fileName := baseName , '.cls'.
+    aStream := FileStream newFileNamed:fileName.
+
+    aStream binary.
+    self binaryFileOutOn:aStream.
+    aStream close.
+!
+
+binaryFileOutOn:aStream
+    |bos|
+
+    bos := BinaryObjectStorage onNew:aStream.
+    bos nextPutClasses:(Array with:self).
+    bos close.
+!
+
 fileOut
     "create a file 'class.st' consisting of all methods in myself.
      If the current project is not nil, create the file in the projects
@@ -3621,6 +3641,6 @@
 !Class class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Class.st,v 1.117 1996-01-17 18:36:36 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Class.st,v 1.118 1996-01-18 00:43:04 cg Exp $'
 ! !
 Class initialize!