[PEAK] BUILD_CLASS has wrong stack effect

PJ Eby pje at telecommunity.com
Wed Feb 22 11:14:48 EST 2017


Fixed and released.  Took me several times longer to get a release
uploaded than it did to actually make the change; I'm a bit befuddled
by all this new, "yeah, documented ways to do things don't work any
more, you just have to use this other package to do things that are
also not documented" rubbish you have to go through to use PyPI any
more.

On Wed, Feb 22, 2017 at 5:32 AM, Marc 'BlackJack' Rintsch
<marc at rintsch.de> wrote:
> Hi,
>
> The stack effect of BUILD_CLASS is given as (3, 0) in the
> `peak.util.assembler` module, but it is actually (3, 1) as it leaves the
> newly built class object on the stack.
>
> Currently I'm using this monkey patch in my code::
>
>   from peak.util.assembler import (
>       BUILD_CLASS as BUILD_CLASS_OPCODE, Code, stack_effects
>   )
>
>   if stack_effects[BUILD_CLASS_OPCODE] == (3, 0):
>       #
>       # Patch in BUILD_CLASS method with correct stack effect.
>       #
>       def BUILD_CLASS(self, op=BUILD_CLASS_OPCODE, se=(3, 1)):
>           self.stackchange(se); self.emit(op)
>
>       setattr(Code, 'BUILD_CLASS', BUILD_CLASS)
>
> Ciao,
>         Marc 'BlackJack' Rintsch
> --
> Calm down. It's only ones and zeros.
>
>
> _______________________________________________
> PEAK mailing list
> PEAK at eby-sarna.com
> http://www.eby-sarna.com/mailman/listinfo/peak


More information about the PEAK mailing list