--- 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!