[squeak-dev] The Trunk: Kernel-nice.434.mcz
commits at source.squeak.org
commits at source.squeak.org
Wed Mar 24 20:12:57 UTC 2010
Nicolas Cellier uploaded a new version of Kernel to project The Trunk:
http://source.squeak.org/trunk/Kernel-nice.434.mcz
==================== Summary ====================
Name: Kernel-nice.434
Author: nice
Time: 24 March 2010, 9:12:27.573 pm
UUID: de185e6f-0fc2-ec4a-be45-aaae05306fbe
Ancestors: Kernel-ar.433
1) Get rid of now unused MethodProperties
2) remove a _ assignment in Random comment
=============== Diff against Kernel-ar.433 ===============
Item was changed:
----- Method: AdditionalMethodState>>analogousCodeTo: (in category 'testing') -----
analogousCodeTo: aMethodProperties
| bs |
- (aMethodProperties isKindOf: MethodProperties) ifTrue: [^aMethodProperties analogousCodeTo: self].
(bs := self basicSize) ~= aMethodProperties basicSize ifTrue:
[^false].
1 to: bs do:
[:i|
((self basicAt: i) analogousCodeTo: (aMethodProperties basicAt: i)) ifFalse:
[^false]].
^true!
Item was changed:
Object subclass: #Random
instanceVariableNames: 'seed a m q r'
classVariableNames: ''
poolDictionaries: ''
category: 'Kernel-Numbers'!
+ !Random commentStamp: 'nice 3/24/2010 07:38' prior: 0!
- !Random commentStamp: 'md 4/26/2003 16:32' prior: 0!
This Random Number Generator graciously contributed by David N. Smith. It is an adaptation of the Park-Miller RNG which uses Floats to avoid the need for LargeInteger arithmetic.
If you just want a quick random integer, use:
10 atRandom
Every integer interval can give a random number:
(6 to: 12) atRandom
SequenceableCollections can give randomly selected elements:
'pick one of these letters randomly' atRandom
SequenceableCollections also respond to shuffled, as in:
($A to: $Z) shuffled
The correct way to use class Random is to store one in an instance or class variable:
+ myGenerator := Random new.
- myGenerator _ Random new.
Then use it every time you need another number between 0.0 and 1.0 (excluding)
myGenerator next
You can also generate a positive integer
myGenerator nextInt: 10!
Item was removed:
- ----- Method: MethodProperties>>setMethod: (in category 'forward compatibility') -----
- setMethod: ignored
- "For forward compatibility wth AdditionalMethodState"!
Item was removed:
- ----- Method: MethodProperties>>pragmas: (in category 'accessing') -----
- pragmas: anArray
- pragmas := anArray!
Item was removed:
- ----- Method: MethodProperties>>hasLiteralThorough: (in category 'testing') -----
- hasLiteralThorough: literal
- "Answer true if any literal in this method is literal,
- even if embedded in array structure."
- properties ifNil:[^false].
- properties keysAndValuesDo: [:key :value |
- key == literal ifTrue: [^true].
- value == literal ifTrue:[^true].
- (value class == Array and: [value hasLiteral: literal]) ifTrue: [^ true]].
- ^false!
Item was removed:
- ----- Method: MethodProperties>>addPragma: (in category 'private') -----
- addPragma: aPragma
- pragmas := self pragmas copyWith: aPragma.!
Item was removed:
- ----- Method: MethodProperties>>at:ifAbsentPut: (in category 'properties') -----
- at: aKey ifAbsentPut: aBlock
- "Answer the property associated with aKey or, if aKey isn't found store the result of evaluating aBlock as new value."
-
- ^ self at: aKey ifAbsent: [ self at: aKey put: aBlock value ].!
Item was removed:
- ----- Method: MethodProperties>>at: (in category 'properties') -----
- at: aKey
- "Answer the property value associated with aKey."
-
- ^ self at: aKey ifAbsent: [ self error: 'Property not found' ].!
Item was removed:
- ----- Method: MethodProperties class>>initialize (in category 'class initialization') -----
- initialize
- self becomeCompact.!
Item was removed:
- ----- Method: MethodProperties>>hasAtLeastTheSamePropertiesAs: (in category 'testing') -----
- hasAtLeastTheSamePropertiesAs: aMethodProperties
- "Answer if the recever has at least the same properties as the argument.
- N.B. The receiver may have additional properties and still answer true."
- aMethodProperties keysAndValuesDo:
- [:k :v|
- (v isKindOf: Pragma)
- "ifTrue: [Pragmas have already been checked]"
- ifFalse: [
- properties ifNil: [^false].
- ^(properties at: k ifAbsent: [^false]) = v]].
- ^true!
Item was removed:
- ----- Method: MethodProperties>>selector: (in category 'accessing') -----
- selector: aSymbol
- selector := aSymbol!
Item was removed:
- ----- Method: MethodProperties>>pragmas (in category 'accessing') -----
- pragmas
- ^pragmas ifNil:[#()]!
Item was removed:
- ----- Method: MethodProperties>>analogousCodeTo: (in category 'testing') -----
- analogousCodeTo: aMethodProperties
- pragmas
- ifNil: [aMethodProperties pragmas notEmpty ifTrue: [^false]]
- ifNotNil:
- [pragmas size ~= aMethodProperties pragmas size ifTrue:
- [^false].
- pragmas with: aMethodProperties pragmas do:
- [:mine :others|
- (mine analogousCodeTo: others) ifFalse: [^false]]].
- ^(self hasAtLeastTheSamePropertiesAs: aMethodProperties)
- and: [aMethodProperties hasAtLeastTheSamePropertiesAs: self]!
Item was removed:
- ----- Method: MethodProperties>>removeKey:ifAbsent: (in category 'properties') -----
- removeKey: aKey ifAbsent: aBlock
- "Remove the property with aKey. Answer the value or, if aKey isn't found, answer the result of evaluating aBlock."
-
- | answer |
- properties isNil ifTrue: [ ^ aBlock value ].
- answer := properties removeKey: aKey ifAbsent: aBlock.
- properties isEmpty ifTrue: [ properties := nil ].
- ^ answer.!
Item was removed:
- ----- Method: MethodProperties>>method: (in category 'forward compatibility') -----
- method: ignored
- "For forward compatibility wth AdditionalMethodState, for decompilation"!
Item was removed:
- ----- Method: MethodProperties>>propertiesIsNil (in category 'testing') -----
- propertiesIsNil
- ^ properties isNil!
Item was removed:
- ----- Method: MethodProperties>>at:put: (in category 'properties') -----
- at: aKey put: anObject
- "Set the property at aKey to be anObject. If aKey is not found, create a new entry for aKey and set is value to anObject. Answer anObject."
-
- properties ifNil: [ properties := IdentityDictionary new ].
- ^ properties at: aKey put: anObject.!
Item was removed:
- ----- Method: MethodProperties>>keysAndValuesDo: (in category 'properties') -----
- keysAndValuesDo: aBlock
- "Enumerate the receiver with all the keys and values."
- ^properties ifNotNil:[properties keysAndValuesDo: aBlock]!
Item was removed:
- ----- Method: MethodProperties>>removeKey: (in category 'properties') -----
- removeKey: aKey
- "Remove the property with aKey. Answer the property or raise an error if aKey isn't found."
-
- ^ self removeKey: aKey ifAbsent: [ self error: 'Property not found' ].!
Item was removed:
- ----- Method: MethodProperties>>at:ifAbsent: (in category 'properties') -----
- at: aKey ifAbsent: aBlock
- "Answer the property value associated with aKey or, if aKey isn't found, answer the result of evaluating aBlock."
-
- properties isNil ifTrue: [ ^ aBlock value ].
- ^ properties at: aKey ifAbsent: aBlock.!
Item was removed:
- ----- Method: MethodProperties>>initialize (in category 'initialization') -----
- initialize
- super initialize.
- pragmas := #().!
Item was removed:
- ----- Method: MethodProperties>>isMethodProperties (in category 'testing') -----
- isMethodProperties
- ^true!
Item was removed:
- ----- Method: MethodProperties>>propertyKeysAndValuesDo: (in category 'properties') -----
- propertyKeysAndValuesDo: aBlock
- "Enumerate the receiver with all the keys and values."
- ^properties ifNotNil:[properties keysAndValuesDo: aBlock]!
Item was removed:
- ----- Method: MethodProperties>>notEmpty (in category 'testing') -----
- notEmpty
- ^(properties notNil and: [properties notEmpty])
- or: [pragmas notNil and: [pragmas notEmpty]]!
Item was removed:
- ----- Method: MethodProperties>>hasLiteralSuchThat: (in category 'testing') -----
- hasLiteralSuchThat: aBlock
- "Answer true if litBlock returns true for any literal in this array, even if embedded in further array structure.
- This method is only intended for private use by CompiledMethod hasLiteralSuchThat:"
- properties ifNil:[^false].
- properties keysAndValuesDo: [:key :value |
- ((aBlock value: key)
- or: [(aBlock value: value)
- or: [value isArray
- and: [value hasLiteralSuchThat: aBlock]]]) ifTrue: [^true]].
- ^false!
Item was removed:
- ----- Method: MethodProperties>>selector (in category 'accessing') -----
- selector
- ^selector!
Item was removed:
- Object subclass: #MethodProperties
- instanceVariableNames: 'properties pragmas selector'
- classVariableNames: ''
- poolDictionaries: ''
- category: 'Kernel-Methods'!
-
- !MethodProperties commentStamp: 'lr 2/6/2006 19:31' prior: 0!
- I am class holding state for compiled methods. All my instance variables should be actually part of the CompiledMethod itself, but the current implementation of the VM doesn't allow this.
-
- I am a compact class and optimized for size and speed, since every CompiledMethod points onto an instance of myself. I am mostly polymorphic to the protocol of an identity-dictionary, so that key-value pairs can be easily stored and retreived without the need to add new variables. However keep in mind that instantiating a dictionary consumes much more memory than adding an instance-variable, so it might be clever to add a new variable if the property is going to be used by every compiled method.!
Item was removed:
- ----- Method: MethodProperties>>propertyValueAt:ifAbsent: (in category 'properties') -----
- propertyValueAt: aKey ifAbsent: aBlock
- "Answer the property value associated with aKey or, if aKey isn't found, answer the result of evaluating aBlock."
- ^self at: aKey ifAbsent: aBlock!
Item was removed:
- ----- Method: MethodProperties>>includesKey: (in category 'properties') -----
- includesKey: aKey
- "Test if the property aKey is present."
-
- ^ properties notNil and: [ properties includesKey: aKey ].!
Item was removed:
- ----- Method: MethodProperties>>isEmpty (in category 'testing') -----
- isEmpty
- ^(properties isNil or: [properties isEmpty])
- and: [pragmas isNil or: [pragmas isEmpty]]!
Item was removed:
- ----- Method: MethodProperties>>postCopy (in category 'copying') -----
- postCopy
- properties := properties copy.
- pragmas := pragmas copy.
- !
More information about the Squeak-dev
mailing list
|