[PEAK] BUILD_CLASS has wrong stack effect

Marc 'BlackJack' Rintsch marc at rintsch.de
Wed Feb 22 05:32:26 EST 2017


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)

	Marc 'BlackJack' Rintsch
Calm down. It's only ones and zeros.

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: OpenPGP digital signature
Url : http://www.eby-sarna.com/pipermail/peak/attachments/20170222/feac3ed4/signature.bin

More information about the PEAK mailing list