A new version of SystemEditor was added to project SystemEditor:
http://www.squeaksource.com/SystemEditor/SystemEditor-mtf.145.mcz
==================== Summary ====================
Name: SystemEditor-mtf.145
Author: mtf
Time: 25 October 2008, 11:05:21 pm
UUID: d060ae78-dc4a-4494-9a0c-7008b959baa2
Ancestors: SystemEditor-mtf.144
oops; forgot to actually migrate the instances in the new migrator
=============== Diff against SystemEditor-mtf.144 ===============
Item was changed:
----- Method: MigrationTransaction>>commit (in category 'public') -----
commit
"The mass become: is a primitive, but we execute this method with preemption
disabled because we don't want another process creating new instances while
we're busy converting the existing instances."
| old new |
[
old := WriteStream on: (Array new: migrators size).
new := WriteStream on: (Array new: migrators size).
migrators do: [:ea | ea migrateFrom: old to: new].
+ self collectInstancesOldInto: old newInto: new.
old contents elementsExchangeIdentityWith: new contents.
] valueUnpreemptively.!
A new version of SystemEditor was added to project SystemEditor:
http://www.squeaksource.com/SystemEditor/SystemEditor-mtf.144.mcz
==================== Summary ====================
Name: SystemEditor-mtf.144
Author: mtf
Time: 25 October 2008, 10:05:37 pm
UUID: 764f8db8-5d21-4262-a22c-5210aa54c69c
Ancestors: SystemEditor-mtf.143
enable the new instance migrator. HIGHLY EXPERIMENTAL. May result in crashes
=============== Diff against SystemEditor-mtf.143 ===============
Item was changed:
----- Method: ClassEditor>>edPrepareInstanceMigration: (in category 'building') -----
edPrepareInstanceMigration: txn
+ txn migrateInstancesOf: self subject to: self product!
- txn addMigrator: (InstanceMigrator from: self subject to: self product)!
A new version of SystemEditor was added to project SystemEditor:
http://www.squeaksource.com/SystemEditor/SystemEditor-mtf.143.mcz
==================== Summary ====================
Name: SystemEditor-mtf.143
Author: mtf
Time: 25 October 2008, 10:02:56 pm
UUID: c6fe8815-84e4-4c81-a55c-6f5a70aa8253
Ancestors: SystemEditor-mtf.142
an experimental InstanceMigrator refactor that should be able to find all instances of any number of classes in constant, rather than linear, time, hopefully resulting in a nice speedup in the average case. It is not yet used, so this change is harmless
=============== Diff against SystemEditor-mtf.142 ===============
Item was added:
+ ----- Method: MigrationTransaction>>collectInstancesOldInto:newInto: (in category 'instance refactor') -----
+ collectInstancesOldInto: oStream newInto: dStream
+ "collect instances of all migrating objects using one memory scan rather than n. SystemNavigation>>allObjectsDo: is inlined here for portability to a KernelImage"
+ | object |
+ instanceMigrators ifNil: [^ self].
+ object := self someObject.
+ [0 == object]
+ whileFalse: [
+ instanceMigrators at: object class ifPresent: [:migrator |
+ oStream nextPut: object.
+ dStream nextPut: (migrator migrate: object)].
+ object := object nextObject]!
Item was added:
+ ----- Method: MigrationTransaction>>migrateInstancesOf:to: (in category 'instance refactor') -----
+ migrateInstancesOf: oldClass to: newClass
+ instanceMigrators ifNil: [instanceMigrators := IdentityDictionary new].
+ instanceMigrators at: oldClass
+ put: (InstanceMigrator from: oldClass to: newClass)!
Item was changed:
Object subclass: #MigrationTransaction
+ instanceVariableNames: 'migrators instanceMigrators'
- instanceVariableNames: 'migrators'
classVariableNames: ''
poolDictionaries: ''
category: 'SystemEditor-Editors'!
A new version of SystemEditor was added to project SystemEditor:
http://www.squeaksource.com/SystemEditor/SystemEditor-mtf.142.mcz
==================== Summary ====================
Name: SystemEditor-mtf.142
Author: mtf
Time: 25 October 2008, 8:35:08 pm
UUID: 1b1f863f-aa29-4623-9f57-536f29a057ce
Ancestors: SystemEditor-mtf.141
fixed a bug for new classes using custom compilers
=============== Diff against SystemEditor-mtf.141 ===============
Item was changed:
----- Method: MethodEditor>>compileFor: (in category 'building') -----
compileFor: aClassEditor
[
| node method |
+ node := aClassEditor product compilerClass new
- node := aClassEditor compilerClass new
compile: source
in: aClassEditor product
notifying: requestor
ifFail: nil.
node encoder requestor: self.
method := node generate: #(0 0 0 0).
(method respondsTo: #selector:) "set selector on 3.9 and above"
ifTrue: [method selector: node selector].
^ method
] on: SyntaxErrorNotification do: [:ex |
"In 3.10, the class category needs to be set"
ex instVarNamed: #category put: aClassEditor category.
"Let the user fix and install the fixed code into the class's old or temporary MethodDictionary"
ex outer.
"Now fetch and use that code instead"
source := aClassEditor product sourceCodeAt: self selector ifAbsent: [^ nil].
^ aClassEditor product compiledMethodAt: self selector
]!
A new version of SystemEditor was added to project SystemEditor:
http://www.squeaksource.com/SystemEditor/SystemEditor-mtf.141.mcz
==================== Summary ====================
Name: SystemEditor-mtf.141
Author: mtf
Time: 25 October 2008, 6:04:05 pm
UUID: e996aa9d-e762-4d63-bb35-8f1eb6bdf638
Ancestors: SystemEditor-mtf.140
fixed the bug that caused SystemNavigation to find classes twice
=============== Diff against SystemEditor-mtf.140 ===============
Item was changed:
----- Method: ClassExporter>>export: (in category 'private') -----
export: aClass
+ ((aClass isBehavior) and: [aClass superclass notNil]
+ "Don't add aClass as subclass if a subclass exists that will become: aClass.
+ This can be checked by comparing the names. Otherwise, redundent
+ subclass entries appear, which makes
+ SystemNavigation>>allBehaviorsDo: find classes twice"
+ and: [aClass superclass subclasses noneSatisfy: [:ea | ea name = aClass name]])
- ((aClass isBehavior) and: [aClass superclass notNil])
ifTrue: [aClass superclass addSubclass: aClass].
(environment includesKey: aClass name)
ifTrue: [self replace: aClass]
ifFalse: [environment at: aClass name put: aClass]!