[Vm-dev] inlining constant with branch elimination is aggressive
Eliot Miranda
eliot.miranda at gmail.com
Sun Oct 25 17:20:01 UTC 2015
Good catch. That's a bad bug. The I liner shouldn't elide expressions in the input arguments. I'll fix this soon.
_,,,^..^,,,_ (phone)
> On Oct 23, 2015, at 5:09 PM, Nicolas Cellier <nicolas.cellier.aka.nice at gmail.com> wrote:
>
> Example in shortPrintContext:
>
> (self isMachineCodeFrame: (theFP := self frameOfMarriedContext: aContext))
> ifTrue: [self print: ' M (']
> ifFalse: [self print: ' I ('].
> self printHex: theFP asUnsignedInteger; print: ') '
>
> in a stack vm, isMachineCodeFrame: is unconditionnally false, so theFP never gets a chance to be initialized...
>
> It's potentially dagerous... Either we change the generator to generate the side effects, or we manually change the code.
More information about the Vm-dev
mailing list