Class.st
changeset 900 138ea0c188ee
parent 897 b293763e7c62
child 902 2e1c740a255f
--- a/Class.st	Thu Jan 25 16:54:40 1996 +0100
+++ b/Class.st	Thu Jan 25 16:55:30 1996 +0100
@@ -1003,40 +1003,54 @@
     "/   classVarNames
     "/   category
     "/   classInstVarNames
-
-    superclass name storeBinaryOn:stream manager:manager.
+    "/   comment
+
+    superclass isNil ifTrue:[
+	s := nil
+    ] ifFalse:[
+	s := superclass name
+    ].
+    s storeBinaryOn:stream manager:manager.
     name storeBinaryOn:stream manager:manager.
     flags storeBinaryOn:stream manager:manager.
     (instvars notNil and:[instvars isEmpty]) ifTrue:[
-	nil storeBinaryOn:stream manager:manager.
+	s := nil
     ] ifFalse:[
-	instvars storeBinaryOn:stream manager:manager.
+	s := instvars
     ].
+    s storeBinaryOn:stream manager:manager.
+
     (classvars notNil and:[classvars isEmpty]) ifTrue:[
-	nil storeBinaryOn:stream manager:manager.
+	s := nil
     ] ifFalse:[
-	classvars storeBinaryOn:stream manager:manager.
+	s := classvars
     ].
+    s storeBinaryOn:stream manager:manager.
+
     category storeBinaryOn:stream manager:manager.
     s := self class instanceVariableString.
     (s notNil and:[s isEmpty]) ifTrue:[
-	nil storeBinaryOn:stream manager:manager.
-    ] ifFalse:[
-	s storeBinaryOn:stream manager:manager.
+	s := nil
     ].
+    s storeBinaryOn:stream manager:manager.
+
+    s := comment.
+    manager sourceMode == #discard ifTrue:[
+	s := nil
+    ].
+    s storeBinaryOn:stream manager:manager.
 
     "/ store
     "/   number of class methods
-    selectors := self class selectorArray.
+    selectors := self class selectorArray copy.
     selectors storeBinaryOn:stream manager:manager.
 
     "/ store
     "/   class methods
-    nSel := selectors size.
-    1 to:nSel do:[:i |
+    selectors do:[:sel |
 	|m|
 
-	m := self class methodArray at:i.
+	m := self class compiledMethodAt:sel.
 	m isLazyMethod ifTrue:[
 	    m := m makeRealMethod
 	].
@@ -1047,15 +1061,15 @@
     "/ store
     "/   number of inst methods
     
-    selectorArray storeBinaryOn:stream manager:manager.
+    selectors := selectorArray copy.
+    selectors storeBinaryOn:stream manager:manager.
 
     "/ store
     "/   inst methods
-    nSel := selectorArray size.
-    1 to:nSel do:[:i |
+    selectors do:[:sel |
 	|m|
 
-	m := methodArray at:i.
+	m := self compiledMethodAt:sel.
 	m isLazyMethod ifTrue:[
 	    m := m makeRealMethod
 	].
@@ -1087,7 +1101,7 @@
      #storeBinaryClassOn:manager:"
 
     |superclassName name flags instvars classvars category classInstVars
-     nSel sel lastCategory
+     comment nSel sel lastCategory
      newClass superClass selectors methods cselectors cmethods|
 
     "/ the following order must correlate to
@@ -1101,10 +1115,12 @@
     "/   classVarNames
     "/   category
     "/   classInstVarNames
+    "/   comment
 
     superclassName := manager nextObject.
-
-    superClass := Smalltalk at:superclassName ifAbsent:nil.
+    superclassName notNil ifTrue:[
+	superClass := Smalltalk at:superclassName ifAbsent:nil.
+    ].
     superClass notNil ifTrue:[
 "/ ('loading superclass: ' ,  superclassName ) printNL.
 	superClass autoload.
@@ -1120,30 +1136,7 @@
     category := manager nextObject.
     classInstVars := manager nextObject.
     classInstVars isNil ifTrue:[classInstVars := ''].
-
-"/ ('create class: ' ,  name ) printNL.
-
-    newClass := superClass class
-	    name:name asSymbol
-	    inEnvironment:Smalltalk
-	    subclassOf:superClass
-	    instanceVariableNames:instvars
-	    variable:false
-	    words:false 
-	    pointers:true
-	    classVariableNames:classvars
-	    poolDictionaries:'' 
-	    category:category
-	    comment:nil
-	    changed:false 
-	    classInstanceVariableNames:classInstVars.
-
-"/    newClass := superClass
-"/                    subclass:name asSymbol
-"/                    instanceVariableNames:instvars
-"/                    classVariableNames:classvars
-"/                    poolDictionaries:''
-"/                    category:category.
+    comment := manager nextObject.
 
 "/    'got superName:' print. superclassName printNL.
 "/    'got name:' print. name printNL.
@@ -1153,6 +1146,25 @@
 "/    'got category: ' print. category printNL.
 "/    'got classInstvars: ' print. classInstVars printNL.
 
+"/ ('create class: ' ,  name ) printNL.
+
+    (superClass notNil or:[superclassName isNil]) ifTrue:[
+	newClass := superClass class
+		name:name asSymbol
+		inEnvironment:Smalltalk
+		subclassOf:superClass
+		instanceVariableNames:instvars
+		variable:false
+		words:false 
+		pointers:true
+		classVariableNames:classvars
+		poolDictionaries:'' 
+		category:category
+		comment:comment 
+		changed:false 
+		classInstanceVariableNames:classInstVars.
+    ].
+
     "/ retrieve
     "/   number of class methods
 
@@ -1185,7 +1197,7 @@
 	methods at:i put:m.
     ].
 
-    superClass isNil ifTrue:[^ nil].
+    (superClass isNil and:[superclassName notNil]) ifTrue:[^ nil].
     newClass isNil ifTrue:[
 	^ nil
     ].
@@ -3718,6 +3730,6 @@
 !Class class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Class.st,v 1.126 1996-01-24 23:02:47 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Class.st,v 1.127 1996-01-25 15:55:30 cg Exp $'
 ! !
 Class initialize!