[squeak-dev] The Trunk: Kernel-ul.550.mcz
Levente Uzonyi
leves at elte.hu
Tue Mar 15 17:17:54 UTC 2011
On Tue, 15 Mar 2011, Eliot Miranda wrote:
> Hi Levente,
>
> don't know about you, but I'd like to see all of MethodReference in the
> base, and not have it as a series of extensions all over the place. This is
> really important reflective infrastructure.
It seems to be a good idea. I'm currently refactoring SystemNavigation,
this change was required by my changes.
Levente
>
> best,
> Eliot
>
> On Mon, Mar 14, 2011 at 9:51 AM, <commits at source.squeak.org> wrote:
>
>> 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
|