Re: BUILD_CLASS has wrong stack effect

PJ Eby <pje-Wh6+Hckhi6HFNGf7iClzIwC/[email protected]> Wed, 22 Feb 2017 11:14:48 -0500
Newsgroups gmane.comp.python.peak
Message-ID <CALeMXf6zQbsC_U7C=dvHMw_A8gyM_a=Oe0XbO25jOAi8EOwdWw@mail.gmail.com>
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
<[email protected]> 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
> [email protected]
> http://www.eby-sarna.com/mailman/listinfo/peak