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