[squeak-dev] The Trunk: Kernel-ul.550.mcz
commits at source.squeak.org
commits at source.squeak.org
Mon Mar 14 16:52:00 UTC 2011
Levente Uzonyi uploaded a new version of Kernel to project The Trunk:
http://source.squeak.org/trunk/Kernel-ul.550.mcz
==================== Summary ====================
Name: Kernel-ul.550
Author: ul
Time: 13 March 2011, 8:55:41.533 pm
UUID: 0fbe4def-75cd-a747-9d26-44e6a9daaa04
Ancestors: Kernel-ul.549
- moved MethodReference >> #actualClass to the System package
- CompiledMethod >> #getPreambleFrom:at: allocates a non-empty buffer
- added Behavior >> #whichSelectorsReferTo:special:byte:thorough: which unifies
#whichSelectorsReferTo:special:byte: and #thoroughWhichSelectorsReferTo:special:byte:
=============== Diff against Kernel-ul.549 ===============
Item was changed:
----- Method: Behavior>>thoroughWhichSelectorsReferTo:special:byte: (in category 'testing method dictionary') -----
thoroughWhichSelectorsReferTo: literal special: specialFlag byte: specialByte
"Answer a set of selectors whose methods access the argument as a
literal. Dives into the compact literal notation, making it slow but
thorough "
+ ^self whichSelectorsReferTo: literal special: specialFlag byte: specialByte thorough: true!
- | who |
- who := IdentitySet new.
- self selectorsAndMethodsDo:
- [:sel :method |
- ((method hasLiteralThorough: literal) or: [specialFlag and: [method scanFor: specialByte]])
- ifTrue:
- [((literal isVariableBinding) not
- or: [method literals allButLast includes: literal])
- ifTrue: [who add: sel]]].
- ^ who!
Item was changed:
----- Method: Behavior>>whichSelectorsReferTo:special:byte: (in category 'testing method dictionary') -----
whichSelectorsReferTo: literal special: specialFlag byte: specialByte
"Answer a set of selectors whose methods access the argument as a literal."
+ ^self whichSelectorsReferTo: literal special: specialFlag byte: specialByte thorough: false!
- | who |
- who := IdentitySet new.
- self selectorsAndMethodsDo:
- [:sel :method |
- ((method hasLiteral: literal) or: [specialFlag and: [method scanFor: specialByte]])
- ifTrue:
- [((literal isVariableBinding) not
- or: [method literals allButLast includes: literal])
- ifTrue: [who add: sel]]].
- ^ who!
Item was added:
+ ----- Method: Behavior>>whichSelectorsReferTo:special:byte:thorough: (in category 'testing method dictionary') -----
+ whichSelectorsReferTo: literal special: specialFlag byte: specialByte thorough: thorough
+ "Answer a set of selectors whose methods access the argument as a literal. If thorough is true, then dives into the compact literal notation, making it slow but thorough "
+
+ | who |
+ who := IdentitySet new.
+ self selectorsAndMethodsDo: [ :selector :method |
+ (((thorough
+ ifFalse: [ method hasLiteral: literal ]
+ ifTrue: [ method hasLiteralThorough: literal ]) or: [
+ specialFlag and: [ method scanFor: specialByte ] ]) and: [
+ literal isVariableBinding not or: [
+ method literals allButLast includes: literal] ]) ifTrue: [
+ who add: selector ] ].
+ ^who!
Item was changed:
----- Method: CompiledMethod>>getPreambleFrom:at: (in category 'source code management') -----
getPreambleFrom: aFileStream at: position
| writeStream |
+ writeStream := (String new: 100) writeStream.
- writeStream := String new writeStream.
position to: 0 by: -1 do: [ :p |
| c |
aFileStream position: p.
(c := aFileStream basicNext) == $!!
ifTrue: [ ^writeStream contents reversed ]
ifFalse: [ writeStream nextPut: c ] ]!
Item was removed:
- ----- Method: MethodReference>>actualClass (in category '*Kernel-Traits') -----
- actualClass
-
- | actualClass |
-
- actualClass := Smalltalk at: classSymbol ifAbsent: [^nil].
- classIsMeta ifTrue: [^actualClass classSide].
- ^actualClass
-
- !
More information about the Squeak-dev
mailing list
|