[squeak-dev] The Trunk: Kernel-ar.358.mcz

commits at source.squeak.org commits at source.squeak.org
Thu Dec 31 13:42:25 UTC 2009


Andreas Raab uploaded a new version of Kernel to project The Trunk:
http://source.squeak.org/trunk/Kernel-ar.358.mcz

==================== Summary ====================

Name: Kernel-ar.358
Author: ar
Time: 30 December 2009, 3:25:44 am
UUID: 64524f19-7ed5-c447-b0e7-87b498e927c2
Ancestors: Kernel-ar.357

Some recategorization and removal of empty categories.

=============== Diff against Kernel-ar.356 ===============

Item was changed:
+ ----- Method: Behavior>>hash (in category 'comparing') -----
- ----- Method: Behavior>>hash (in category 'as yet unclassified') -----
  hash
  	^ self name hash!

Item was added:
+ ----- Method: ClassDescription class>>initialize (in category 'class initialization') -----
+ initialize
+ 	"Do some reformatting of categories"
+ 	{
+ 		Behavior	->	#(#'initialize-release' #accessing #'accessing class hierarchy' #'accessing instances and variables' #'accessing method dictionary' #testing #'testing class hierarchy' #'testing method dictionary' #comparing #'adding/removing methods' #compiling #enumerating #copying #'instance creation' #'obsolete subclasses' #printing #queries #'system startup' #'user interface' #private
+ 		). 
+ 		ClassDescription->#(#'initialize-release' #accessing #'accessing class hierarchy' #'accessing comment' #'accessing method dictionary' #'accessing parallel hierarchy' #compiling #copying #'fileIn/Out' #'instance variables' #organization #printing #private
+ 		). 
+ 		Class->#(#'initialize-release' #accessing #'accessing class hierarchy' #testing #'class name' #'class variables' #compiling #copying #'fileIn/Out' #'instance variables' #organization #'pool variables' #'subclass creation' #private
+ 		). 
+ 		Metaclass->#(#'initialize-release' #accessing #'accessing parallel hierarchy' #testing #'class hierarchy' #compiling #copying #enumerating #'fileIn/Out' #'instance creation' #'instance variables' #'pool variables' #private
+ 		).
+ 		Behavior class->#(#'class initialization' #testing) . 
+ 		ClassDescription class->#(#'class initialization' #traits) . 
+ 		Class class->#(#'fileIn/Out' #'instance creation' #inquiries) . 
+ 		Metaclass class->#(#'anti-corruption')
+ 	} do:[:assoc| | organizer categories |
+ 		organizer := assoc key organization.
+ 		categories := assoc value, 
+ 			(organizer categories reject:[:cat| assoc value includes: cat]).
+ 		organizer categories: categories.
+ 		organizer removeEmptyCategories.
+ 	].!

Item was changed:
+ ----- Method: Behavior>>obsolete (in category 'initialize-release') -----
- ----- Method: Behavior>>obsolete (in category 'initialization') -----
  obsolete
  	"Invalidate and recycle local methods,
  	e.g., zap the method dictionary if can be done safely."
  	self canZapMethodDictionary
  		ifTrue: [self methodDict: self emptyMethodDictionary].!

Item was changed:
  ClassDescription subclass: #Class
+ 	instanceVariableNames: 'subclasses name classPool sharedPools environment category'
- 	instanceVariableNames: 'subclasses name classPool sharedPools environment category traitComposition localSelectors'
  	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'Kernel-Classes'!
  
  !Class commentStamp: '<historical>' prior: 0!
  I add a number of facilities to those in ClassDescription:
  	A set of all my subclasses (defined in ClassDescription, but only used here and below)
  	A name by which I can be found in a SystemDictionary
  	A classPool for class variables shared between this class and its metaclass
  	A list of sharedPools which probably should be supplanted by some better mechanism.
  
  My instances describe the representation and behavior of objects. I add more comprehensive programming support facilities to the basic attributes of Behavior and the descriptive facilities of ClassDescription.
  
  The slot 'subclasses' is a redundant structure.  It is never used during execution, but is used by the development system to simplify or speed certain operations.  !

Item was changed:
+ ----- Method: Behavior>>environment (in category 'accessing') -----
- ----- Method: Behavior>>environment (in category 'naming') -----
  environment
  	"Return the environment in which the receiver is visible"
  	^Smalltalk!

Item was changed:
  ClassDescription subclass: #Metaclass
+ 	instanceVariableNames: 'thisClass'
- 	instanceVariableNames: 'thisClass traitComposition localSelectors'
  	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'Kernel-Classes'!
  
  !Metaclass commentStamp: '<historical>' prior: 0!
  My instances add instance-specific behavior to various class-describing objects in the system. This typically includes messages for initializing class variables and instance creation messages particular to a class. There is only one instance of a particular Metaclass, namely the class which is being described. A Metaclass shares the class variables of its instance.
  	
  [Subtle] In general, the superclass hierarchy for metaclasses parallels that for classes. Thus,
  	Integer superclass == Number, and
  	Integer class superclass == Number class.
  However there is a singularity at Object. Here the class hierarchy terminates, but the metaclass hierarchy must wrap around to Class, since ALL metaclasses are subclasses of Class. Thus,
  	Object superclass == nil, and
  	Object class superclass == Class.
  
  [Subtle detail] A class is know by name to an environment.  Typically this is the SystemDictionary named Smalltalk.  If we ever make lightweight classes that are not in Smalltalk, they must be in some environment.  Specifically, the code that sets 'wasPresent' in name:inEnvironment:subclassOf:instanceVariableNames:variable:words:pointers:classVariableNames:poolDictionaries:category:comment:changed: must continue to work.!

Item was changed:
+ ----- Method: Behavior>>emptyMethodDictionary (in category 'initialize-release') -----
- ----- Method: Behavior>>emptyMethodDictionary (in category 'initialization') -----
  emptyMethodDictionary
  
  	^ MethodDictionary new!

Item was changed:
+ ----- Method: ClassDescription>>notifyOfRecategorizedSelector:from:to: (in category 'organization') -----
- ----- Method: ClassDescription>>notifyOfRecategorizedSelector:from:to: (in category 'organization updating') -----
  notifyOfRecategorizedSelector: element from: oldCategory to: newCategory
  	SystemChangeNotifier uniqueInstance selector: element recategorizedFrom: oldCategory to: newCategory inClass: self!

Item was removed:
- ----- Method: Class>>shouldNotBeRedefined (in category 'initialize-release') -----
- shouldNotBeRedefined
- 	"temporarily, since I know what I'm doing"
- 	^false!




More information about the Squeak-dev mailing list