◐ Shell
clean mode source ↗

gh-111520: Integrate the Tier 2 interpreter in the Tier 1 interpreter by gvanrossum · Pull Request #111428 · python/cpython

added 5 commits

October 27, 2023 13:24
Use `GOTO_ERROR(error)` instead of `goto error`.
This macro is defined differently in the tier two interpreter.
This replaces PYTHONUOPSDEBUG=N. The meaning of N is the same (for now):

  0: no tracing
  1: print when tier 2 trace created
  2: print contents of tier 2 trace
  3: print every uop executed
  4: print optimization attempts and details
  5: print tier 1 instructions and stack

markshannon

@gvanrossum gvanrossum changed the title Integrate the Tier 2 interpreter in the Tier 1 interpreter gh-111520: Integrate the Tier 2 interpreter in the Tier 1 interpreter

Oct 30, 2023
- Remove CHECK_EVAL_BREAKER() from top of Tier 2 loop
- Make Tier 2 default case Py_UNREACHABLE() in non-debug mode
- GOTO_TIER_TWO() macro instead of `goto enter_tier_two`
- Inline ip_offset (Tier 2 LOAD_IP() is now a no-op)
- Move #define/#under TIER_ONE/TIER_TWO into generated .c.h files
- ceval_macros.h defines Tier 1 macros, Tier 2 is inlined in ceval.c

gvanrossum

gvanrossum

@gvanrossum

(I accidentally kept this commit after pushing it experimentally.
This means I've been testing with uops on all the time, which is
actually pretty amazing.)

This reverts commit e0e60ce.
Using `GOTO_TIER_ONE()` macro. This should make things simpler
for Justin.

FullteaR pushed a commit to FullteaR/cpython that referenced this pull request

Nov 3, 2023
…preter (python#111428)

- There is no longer a separate Python/executor.c file.
- Conventions in Python/bytecodes.c are slightly different -- don't use `goto error`,
  you must use `GOTO_ERROR(error)` (same for others like `unused_local_error`).
- The `TIER_ONE` and `TIER_TWO` symbols are only valid in the generated (.c.h) files.
- In Lib/test/support/__init__.py, `Py_C_RECURSION_LIMIT` is imported from `_testcapi`.
- On Windows, in debug mode, stack allocation grows from 8MiB to 12MiB.
- **Beware!** This changes the env vars to enable uops and their debugging
  to `PYTHON_UOPS` and `PYTHON_LLTRACE`.

aisk pushed a commit to aisk/cpython that referenced this pull request

Feb 11, 2024
…preter (python#111428)

- There is no longer a separate Python/executor.c file.
- Conventions in Python/bytecodes.c are slightly different -- don't use `goto error`,
  you must use `GOTO_ERROR(error)` (same for others like `unused_local_error`).
- The `TIER_ONE` and `TIER_TWO` symbols are only valid in the generated (.c.h) files.
- In Lib/test/support/__init__.py, `Py_C_RECURSION_LIMIT` is imported from `_testcapi`.
- On Windows, in debug mode, stack allocation grows from 8MiB to 12MiB.
- **Beware!** This changes the env vars to enable uops and their debugging
  to `PYTHON_UOPS` and `PYTHON_LLTRACE`.

Glyphack pushed a commit to Glyphack/cpython that referenced this pull request

Sep 2, 2024
…preter (python#111428)

- There is no longer a separate Python/executor.c file.
- Conventions in Python/bytecodes.c are slightly different -- don't use `goto error`,
  you must use `GOTO_ERROR(error)` (same for others like `unused_local_error`).
- The `TIER_ONE` and `TIER_TWO` symbols are only valid in the generated (.c.h) files.
- In Lib/test/support/__init__.py, `Py_C_RECURSION_LIMIT` is imported from `_testcapi`.
- On Windows, in debug mode, stack allocation grows from 8MiB to 12MiB.
- **Beware!** This changes the env vars to enable uops and their debugging
  to `PYTHON_UOPS` and `PYTHON_LLTRACE`.