Message 315818 - Python tracker

Message315818

Author godaygo
Recipients godaygo, larry, serhiy.storchaka
Date 2018-04-26.20:51:54
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <1524775915.05.0.682650639539.issue33326@psf.upfronthosting.co.za>
In-reply-to
Content
Small risk of breaking is a fair point (maybe some FutureWarning with new __getattr__ PEP 562?). I've checked several packages:

---
vstinner/bytecode:: uses:

@staticmethod
    def _has_jump(opcode):
        return (opcode in _opcode.hasjrel
                or opcode in _opcode.hasjabs)

---
maynard:: defines them as sets and does not rely on opcode module.

all_jumps = absolute_jumps | relative_jumps

---
numba:: converts them to frozensets:

JREL_OPS = frozenset(dis.hasjrel)
JABS_OPS = frozenset(dis.hasjabs)
JUMP_OPS = JREL_OPS | JABS_OPS

---
codetransfromer:: uses:

absjmp = opcode in hasjabs
reljmp = opcode in hasjrel

---
anotherassembler.py:: uses

elif opcode in hasjrel or opcode in hasjabs:

---
byteplay:: converts them to set:

hasjrel = set(Opcode(x) for x in opcode.hasjrel)
hasjabs = set(Opcode(x) for x in opcode.hasjabs)
hasjump = hasjrel.union(hasjabs)

---
byterun:: uses:

elif byteCode in dis.hasjrel:
    arg = f.f_lasti + intArg
elif byteCode in dis.hasjabs:
    arg = intArg

In fact, all of the above indicated does not mean anything, but I have not found cases of hasjrel+hasjabs.

Despite the fact that they are small, on average, with sets I gain 5-6x speed-up.
History
Date User Action Args
2018-04-26 20:51:55godaygosetrecipients: + godaygo, larry, serhiy.storchaka
2018-04-26 20:51:55godaygosetmessageid: <1524775915.05.0.682650639539.issue33326@psf.upfronthosting.co.za>
2018-04-26 20:51:55godaygolinkissue33326 messages
2018-04-26 20:51:54godaygocreate