Skip to content

Expose jit_code field for UOp Executor #117958

@tonybaloney

Description

@tonybaloney

Feature or enhancement

Proposal:

I would like to add a method to the UOpExecutor type to expose the JIT code via a byte string using the jit_code and jit_size fields of the executor object. This would be useful for testing and debugging, as well as verification code.

from _opcode import get_executor def get_executors(func): code = func.__code__ co_code = code.co_code executors = {} for i in range(0, len(co_code), 2): try: executors[i] = co_code[i], get_executor(code, i) except ValueError: pass return executors def testfunc(x): i = 0 while i < x: i += 1 testfunc(20) ex = get_executors(testfunc) with open('jit_dump.raw', 'wb') as dumpfile: for i, executor in ex.items(): print(i, executor[0], executor[1]) try: code = executor[1].get_jit_code() dumpfile.write(code) except ValueError: print('Failed to get JIT code for', executor[0]) def f(): a = [0, 1, 2, 3] return a[1]

Has this already been discussed elsewhere?

https://discuss.python.org/t/jit-mapping-bytecode-instructions-and-assembly/50809

Links to previous discussion of this feature:

No response

Linked PRs

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions