[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