[Pkg] SystemEditor: SystemEditor-mtf.154.mcz
squeak-dev-noreply at lists.squeakfoundation.org
squeak-dev-noreply at lists.squeakfoundation.org
Fri Nov 7 06:35:34 UTC 2008
A new version of SystemEditor was added to project SystemEditor:
http://www.squeaksource.com/SystemEditor/SystemEditor-mtf.154.mcz
==================== Summary ====================
Name: SystemEditor-mtf.154
Author: mtf
Time: 6 November 2008, 11:34:51 pm
UUID: ff37b66e-bb9e-46e1-86ab-cde14ca663c1
Ancestors: SystemEditor-mtf.153
moved around classes and extensions to be in two categories: core and squeak. This is the last commit in this line: I am being split up into three packages: core, squeak, and tests.
Also removed one useless class and one useless extension
=============== Diff against SystemEditor-mtf.153 ===============
Item was changed:
Object subclass: #ObjectMigrator
instanceVariableNames: 'origin destination'
classVariableNames: ''
poolDictionaries: ''
+ category: 'SystemEditor-Core'!
- category: 'SystemEditor-Editors'!
!ObjectMigrator commentStamp: 'mtf 7/14/2008 11:59' prior: 0!
My instances store an old and new version of a single object that will be swapped during MigrationTransaction>>commit!
Item was changed:
AbstractEditor subclass: #DictionaryEditor
instanceVariableNames: 'subject additions removals'
classVariableNames: ''
poolDictionaries: ''
+ category: 'SystemEditor-Core'!
- category: 'SystemEditor-Editors'!
Item was changed:
Object subclass: #MethodEditor
instanceVariableNames: 'source category stamp requestor log repository'
classVariableNames: ''
poolDictionaries: ''
+ category: 'SystemEditor-Squeak'!
- category: 'SystemEditor-Editors'!
Item was changed:
Object subclass: #ClassDecorator
instanceVariableNames: 'editor'
classVariableNames: ''
poolDictionaries: ''
+ category: 'SystemEditor-Core'!
- category: 'SystemEditor-Editors'!
!ClassDecorator commentStamp: 'mtf 6/19/2008 23:29' prior: 0!
An abstract superclass for extensions to ClassEditor and MetaclassEditor!
Item was changed:
DictionaryEditor subclass: #MethodDictionaryEditor
instanceVariableNames: 'classEditor'
classVariableNames: ''
poolDictionaries: ''
+ category: 'SystemEditor-Squeak'!
- category: 'SystemEditor-Editors'!
Item was changed:
InvalidSystemChange subclass: #InvalidClassFormat
instanceVariableNames: ''
classVariableNames: ''
poolDictionaries: ''
+ category: 'SystemEditor-Squeak'!
- category: 'SystemEditor-Exceptions'!
Item was changed:
AbstractEditor subclass: #PureBehaviorEditor
instanceVariableNames: 'superclass methodDict format subject product system methods organization properties decorators'
classVariableNames: 'ReservedNames'
poolDictionaries: ''
+ category: 'SystemEditor-Squeak'!
- category: 'SystemEditor-Editors'!
Item was changed:
+ ----- Method: CompiledMethod class>>edInstanceBasedOn: (in category '*systemeditor-core') -----
- ----- Method: CompiledMethod class>>edInstanceBasedOn: (in category '*systemeditor-migrating') -----
edInstanceBasedOn: oldInstance
| size |
size := oldInstance endPC - oldInstance initialPC + 1 + oldInstance trailer size.
^ self newMethod: size header: oldInstance header.
!
Item was changed:
+ ----- Method: ClassOrganizer>>edClassComment:stamp: (in category '*systemeditor-squeak') -----
- ----- Method: ClassOrganizer>>edClassComment:stamp: (in category '*SystemEditor-workaround') -----
edClassComment: aString stamp: aStamp
"Set the comment and stamp directly, with no checks.This works around a silly check in ClassOrganizer>>classComment:stamp: in Croquet. This check raises an error if the subject is either nil or a metaclass. The check does not exist in Squeak 3.8 and above"
^ super classComment: aString stamp: aStamp!
Item was changed:
InvalidSystemChange subclass: #IllegalVariableName
instanceVariableNames: ''
classVariableNames: ''
poolDictionaries: ''
+ category: 'SystemEditor-Squeak'!
- category: 'SystemEditor-Exceptions'!
Item was changed:
ClassDescriptionEditor subclass: #ClassEditor
instanceVariableNames: 'name classVarNames sharedPools category'
classVariableNames: ''
poolDictionaries: ''
+ category: 'SystemEditor-Squeak'!
- category: 'SystemEditor-Editors'!
Item was changed:
CategorizerEditor subclass: #OrganizationEditor
instanceVariableNames: 'classEditor isDirty comment stamp remote repository'
classVariableNames: ''
poolDictionaries: ''
+ category: 'SystemEditor-Squeak'!
- category: 'SystemEditor-Editors'!
!OrganizationEditor commentStamp: 'mtf 7/14/2008 11:28' prior: 0!
My instances are editors for ClassOrganizer instances!
Item was changed:
+ SystemOrganization addCategory: #'SystemEditor-Core'!
+ SystemOrganization addCategory: #'SystemEditor-Squeak'!
- SystemOrganization addCategory: #'SystemEditor-Editors'!
- SystemOrganization addCategory: #'SystemEditor-Exceptions'!
- SystemOrganization addCategory: #'SystemEditor-Info'!
SystemOrganization addCategory: #'SystemEditor-Tests'!
Item was changed:
+ ----- Method: Behavior>>edInstanceBasedOn: (in category '*systemeditor-core') -----
- ----- Method: Behavior>>edInstanceBasedOn: (in category '*systemeditor-migrating') -----
edInstanceBasedOn: oldInstance
| newInstance |
self isVariable
ifTrue: [newInstance := self basicNew: oldInstance basicSize]
ifFalse: [newInstance := self basicNew].
^newInstance!
Item was changed:
ClassDecorator subclass: #SubclassListDecorator
instanceVariableNames: 'parent additions removals'
classVariableNames: ''
poolDictionaries: ''
+ category: 'SystemEditor-Squeak'!
- category: 'SystemEditor-Editors'!
!SubclassListDecorator commentStamp: 'mtf 10/29/2008 13:56' prior: 0!
I remember what subclasses were added to or removed from my parent. Since the subclass list can be nil at times, I cannot migrate it, so I work in edPostLoad!
Item was changed:
DictionaryEditor subclass: #SystemEditor
instanceVariableNames: 'organization showProgress debug'
classVariableNames: ''
poolDictionaries: ''
+ category: 'SystemEditor-Squeak'!
- category: 'SystemEditor-Editors'!
Item was changed:
AbstractEditor subclass: #CategorizerEditor
instanceVariableNames: 'subject renamedCategories categories'
classVariableNames: ''
poolDictionaries: ''
+ category: 'SystemEditor-Squeak'!
- category: 'SystemEditor-Editors'!
!CategorizerEditor commentStamp: '<historical>' prior: 0!
An abstract superclass for editors of Categorizers. Implements the public interface of a Categorizer. I maintain the list of added, removed, or reordered categories, but it is up to subclasses to remember which elements were added, removed, or recategorized.
subject (Categorizer) - The Categorizer I am editing
categories (OrderedCollection) - The ordered list of categories
renamedCategories (Dictionary) - A dictionary mapping old category names to new names!
Item was changed:
ClassEditor subclass: #RootClassEditor
instanceVariableNames: ''
classVariableNames: ''
poolDictionaries: ''
+ category: 'SystemEditor-Squeak'!
- category: 'SystemEditor-Editors'!
!RootClassEditor commentStamp: 'mtf 7/29/2008 08:37' prior: 0!
My instances represent ClassEditors on the concept of "ProtoObject's superclass", the primitive object from which every class, without exception, inherits. I exist so that queries that involve the superclass do not have to be special-cased in case the superclass really is nil.!
Item was changed:
ClassDescriptionEditor subclass: #MetaclassEditor
instanceVariableNames: 'editor'
classVariableNames: ''
poolDictionaries: ''
+ category: 'SystemEditor-Squeak'!
- category: 'SystemEditor-Editors'!
Item was changed:
Notification subclass: #InvalidSystemChange
instanceVariableNames: ''
classVariableNames: ''
poolDictionaries: ''
+ category: 'SystemEditor-Squeak'!
- category: 'SystemEditor-Exceptions'!
Item was changed:
MetaclassEditor subclass: #RootMetaclassEditor
instanceVariableNames: ''
classVariableNames: ''
poolDictionaries: ''
+ category: 'SystemEditor-Squeak'!
- category: 'SystemEditor-Editors'!
Item was changed:
Object subclass: #ClassFormat
instanceVariableNames: 'instSize instSpec cClassIndex'
classVariableNames: ''
poolDictionaries: ''
+ category: 'SystemEditor-Squeak'!
- category: 'SystemEditor-Editors'!
!ClassFormat commentStamp: 'mtf 7/7/2008 23:18' prior: 0!
I am an expert on the way the Squeak VM encodes class formats. My instance variable, 'bits', is identical in format to the 'format' instance variable of Behavior. I have methods for interpreting those bits. The class format integer is 18 bits in length. The instSize field is split into two parts for backwards compatibility.
<2 bits=instSize//64> <5 bits=cClass> <4 bits=instSpec> <6 bits=instSize\\64> <1 bit=0>
- instSize: the number of named instance variables
- cClass: the index into the compact class table
- instSpec: values indicating how instances are organized
0 - no state
1 - named instance variables only
2 - variable number of object pointers
3 - named instance variables, variable number of object pointers
4 - variable number of weak object pointers
6 - variable number of words
8 - variable number of bytes
12 - compiled method format: variable number of object pointers, variable number of bytes!
Item was changed:
CategorizerEditor subclass: #SystemOrganizationEditor
instanceVariableNames: 'system'
classVariableNames: ''
poolDictionaries: ''
+ category: 'SystemEditor-Squeak'!
- category: 'SystemEditor-Editors'!
Item was changed:
PureBehaviorEditor subclass: #ClassDescriptionEditor
instanceVariableNames: 'superEditor type instVarNames'
classVariableNames: ''
poolDictionaries: ''
+ category: 'SystemEditor-Squeak'!
- category: 'SystemEditor-Editors'!
!ClassDescriptionEditor commentStamp: 'mtf 7/29/2008 21:55' prior: 0!
I am an abstract superclass for both ClassEditor and MetaclassEditor.
I implement the Behavior protocol: my instances can create instances. This means that my first three variables must remain 'superclass methodDict format', as the VM accesses them positionally, and my superclasses must not define any instance vairables. Only MetaclassEditor makes use of these ivars, but they are defined here to avoid duplicating a lot of ivars and accessing methods between ClassEditor and MetaclassEditor!
Item was changed:
Object subclass: #AbstractEditor
instanceVariableNames: ''
classVariableNames: ''
poolDictionaries: ''
+ category: 'SystemEditor-Core'!
- category: 'SystemEditor-Editors'!
Item was changed:
Object subclass: #InstanceMigrator
instanceVariableNames: 'map instSize origin destination'
classVariableNames: ''
poolDictionaries: ''
+ category: 'SystemEditor-Core'!
- category: 'SystemEditor-Editors'!
!InstanceMigrator commentStamp: 'mtf 7/14/2008 23:51' prior: 0!
My instances are responsible for finding instances of an old class and building them in a new format, to be swapped during MigrationTransaction>>commit!
Item was changed:
Object subclass: #ClassExporter
instanceVariableNames: 'environment classes oldClasses newClasses'
classVariableNames: ''
poolDictionaries: ''
+ category: 'SystemEditor-Squeak'!
- category: 'SystemEditor-Editors'!
!ClassExporter commentStamp: 'mtf 10/28/2008 18:55' prior: 0!
This class does a few things.
- The second step (becomeForward:)of ClassBuilder>>update:to:
- add each class to its superclass's subclasses list
- add each class to the SystemDictionary Smalltalk!
Item was changed:
Object subclass: #MigrationTransaction
instanceVariableNames: 'migrators'
classVariableNames: ''
poolDictionaries: ''
+ category: 'SystemEditor-Core'!
- category: 'SystemEditor-Editors'!
Item was changed:
Object subclass: #SourceRepository
instanceVariableNames: 'files'
classVariableNames: ''
poolDictionaries: ''
+ category: 'SystemEditor-Squeak'!
- category: 'SystemEditor-Editors'!
!SourceRepository commentStamp: 'mtf 7/14/2008 11:55' prior: 0!
I have no idea what this class is for. It is extensivily tested in SystemEditor-Tests, but it is actually only used two places in the code:
OrganizationEditor>>writeComment
MethodEditor>>logCompilationFrom:for:
I have not examined to see what it does -- Matthew Fulmer!
Item was changed:
+ ----- Method: Object>>edIsEditor (in category '*systemeditor-core') -----
- ----- Method: Object>>edIsEditor (in category '*systemeditor-testing') -----
edIsEditor
^ false!
Item was removed:
- ----- Method: RemoteString>>basicFileStream (in category '*systemeditor-accessing') -----
- basicFileStream
- (sourceFileNumber == nil or: [(SourceFiles at: sourceFileNumber) == nil]) ifTrue: [^ nil].
- ^ SourceFiles at: sourceFileNumber.!
Item was removed:
- ----- Method: SystemEditorInfo class>>testClasses (in category 'as yet unclassified') -----
- testClasses
- ^ self new classes select: [:ea | ea allSuperclasses includes: TestCase]!
Item was removed:
- ----- Method: SystemEditorInfo class>>testSuite (in category 'as yet unclassified') -----
- testSuite
- | suite |
- suite := TestSuite new.
- suite name: self name asString.
- self testClasses do:
- [:each |
- each isAbstract ifFalse: [each addToSuiteFromSelectors: suite]].
- ^ suite!
Item was removed:
- PackageInfo subclass: #SystemEditorInfo
- instanceVariableNames: ''
- classVariableNames: ''
- poolDictionaries: ''
- category: 'SystemEditor-Info'!
More information about the Packages
mailing list