[squeak-dev] The Trunk: Kernel-eem.1498.mcz
Eliot Miranda
eliot.miranda at gmail.com
Tue Feb 14 00:16:15 UTC 2023
On Mon, Feb 13, 2023 at 12:10 AM Jaromir Matas <mail at jaromir.net> wrote:
> Actually, FullBlockClosure >> home should be fixed too (returns nil for
> outerContext = nil):
>
>
>
> FullBlockClosure >> home
>
> ^ outerContext ifNotNil: [ outerContext home ]
>
>
>
> Fix:
>
>
>
> FullBlockClosure >> home
>
> outerContext ifNotNil: [ ^outerContext home ]
>
I'm not sure about this. home answers a context. This fix would have home
for a clean block answer the block itself. Is that what we want?
(P.S. feel free to make the other changes you're proposing)
>
>
>
>
> *From: *Jaromir Matas <mail at jaromir.net>
> *Sent: *Sunday, February 12, 2023 23:44
> *To: *squeak-dev at lists.squeakfoundation.org; Eliot Miranda
> <eliot.miranda at gmail.com>
> *Subject: *Re: [squeak-dev] The Trunk: Kernel-eem.1498.mcz
>
>
>
> Hi Eliot,
>
> I guess the same fix should apply for #methodReturnContext.
>
>
>
> I wanted to ask about this: #home and #methodReturnContext are synonymous;
> why is that? Some backward compatibility thing or historical reasons?
>
>
>
> Similarly I’ve noticed #method and #homeMethod seem synonymous too if I’m
> not mistaken (in BlockClosure and FullBlockClosure). Is it intentional?
>
>
>
> Thanks,
>
> Jaromir
>
>
>
>
>
> *From: *commits at source.squeak.org
> *Sent: *Sunday, February 12, 2023 22:31
> *To: *squeak-dev at lists.squeakfoundation.org;
> packages at lists.squeakfoundation.org
> *Subject: *[squeak-dev] The Trunk: Kernel-eem.1498.mcz
>
>
>
> Eliot Miranda uploaded a new version of Kernel to project The Trunk:
> http://source.squeak.org/trunk/Kernel-eem.1498.mcz
>
> ==================== Summary ====================
>
> Name: Kernel-eem.1498
> Author: eem
> Time: 12 February 2023, 1:30:55.883243 pm
> UUID: e8b69d4d-8a07-4cf8-8ee7-d764b47f1981
> Ancestors: Kernel-tpr.1497
>
> In implementing BlockClosure>>hasMethodReturn, don't assume the byutecode
> set.
>
> Implement Context>>#home so that it will code with clean blocks.
>
> =============== Diff against Kernel-tpr.1497 ===============
>
> Item was changed:
> ----- Method: BlockClosure>>hasMethodReturn (in category 'testing') -----
> hasMethodReturn
> "Answer whether the receiver has a method-return ('^') in its
> code."
> | scanner endpc |
> + scanner := InstructionStream new method: self method pc:
> startpcOrMethod.
> - scanner := InstructionStream new method: outerContext method pc:
> startpcOrMethod.
> endpc := self endPC.
> + scanner scanFor:
> + [:byte |
> + scanner willReturn ifTrue:
> + [scanner willBlockReturn ifFalse:
> + [^true]].
> + scanner pc >= endpc].
> + ^false!
> - scanner scanFor: [:byte | (byte between: 120 and: 124) or:
> [scanner pc > endpc]].
> - ^scanner pc <= endpc!
>
> Item was changed:
> ----- Method: Context>>home (in category 'accessing') -----
> home
> + "Answer the outermost context (along the static chain) for the
> receiver.
> + This is the outermost lexical scope in which the receiver's
> method is defined."
> - "Answer the context in which the receiver was defined."
>
> + ^closureOrNil
> + ifNil: [self] "normal method activation"
> + ifNotNil: "block activation"
> + [:closure|
> + closure outerContext
> + ifNil: [self] "clean block"
> + ifNotNil: [:outerContext| outerContext
> home]] "normal block"!
> - closureOrNil == nil ifTrue:
> - [^self].
> - ^closureOrNil outerContext home!
>
>
>
>
>
--
_,,,^..^,,,_
best, Eliot
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20230213/740287d0/attachment.html>
More information about the Squeak-dev
mailing list
|