File: stdlib_opcode.py

package info (click to toggle)
pypy3 7.3.19%2Bdfsg-2
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 212,236 kB
  • sloc: python: 2,098,316; ansic: 540,565; sh: 21,462; asm: 14,419; cpp: 4,451; makefile: 4,209; objc: 761; xml: 530; exp: 499; javascript: 314; pascal: 244; lisp: 45; csh: 12; awk: 4
file content (43 lines) | stat: -rw-r--r-- 1,295 bytes parent folder | download | duplicates (9)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
"""
Opcodes PyPy compiles Python source to.
Also gives access to opcodes of the host Python PyPy was bootstrapped with
(module attributes with the `host_` prefix).
"""

# load opcode.py as pythonopcode from our own lib

__all__ = ['opmap', 'opname', 'HAVE_ARGUMENT',
           'hasconst', 'hasname', 'hasjrel', 'hasjabs',
           'haslocal', 'hascompare', 'hasfree', 'cmp_op']

# Initialization

from rpython.rlib.unroll import unrolling_iterable
from rpython.tool.stdlib_opcode import BytecodeSpec, host_bytecode_spec

from opcode import (
    opmap as host_opmap, HAVE_ARGUMENT as host_HAVE_ARGUMENT)

def load_pypy_opcode():
    from pypy.tool.lib_pypy import LIB_PYTHON
    opcode_path = LIB_PYTHON.join('opcode.py')
    d = {}
    execfile(str(opcode_path), d)
    for name in __all__:
        if name in d:
            globals()[name] = d[name]
    return d

load_pypy_opcode()
del load_pypy_opcode

bytecode_spec = BytecodeSpec('pypy', opmap, HAVE_ARGUMENT)
bytecode_spec.to_globals(globals())

opcode_method_names = bytecode_spec.method_names
opcodedesc = bytecode_spec.opcodedesc

unrolling_all_opcode_descs = unrolling_iterable(
    bytecode_spec.ordered_opdescs + host_bytecode_spec.ordered_opdescs)
unrolling_opcode_descs = unrolling_iterable(
    bytecode_spec.ordered_opdescs)