mirror of
https://github.com/python/cpython.git
synced 2025-10-17 20:28:43 +00:00
gh-111520: Integrate the Tier 2 interpreter in the Tier 1 interpreter (#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`.
This commit is contained in:
parent
5d6db168b9
commit
7e135a48d6
19 changed files with 509 additions and 487 deletions
|
@ -162,7 +162,7 @@ class Instruction:
|
|||
f"{func}(&this_instr[{active.offset + 1}].cache);"
|
||||
)
|
||||
else:
|
||||
out.emit(f"{typ}{ceffect.name} = ({typ.strip()})operand;")
|
||||
out.emit(f"{typ}{ceffect.name} = ({typ.strip()})next_uop[-1].operand;")
|
||||
|
||||
# Write the body, substituting a goto for ERROR_IF() and other stuff
|
||||
assert dedent <= 0
|
||||
|
@ -197,6 +197,8 @@ class Instruction:
|
|||
ninputs, symbolic = list_effect_size(ieffs)
|
||||
if ninputs:
|
||||
label = f"pop_{ninputs}_{label}"
|
||||
if tier == TIER_TWO:
|
||||
label = label + "_tier_two"
|
||||
if symbolic:
|
||||
out.write_raw(
|
||||
f"{space}if ({cond}) {{ STACK_SHRINK({symbolic}); goto {label}; }}\n"
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue