Closed
Description
The basic premise of optimizing traces is that most branches are highly biased.
So we use DEOPT_IF
to branch in the uncommon case.
However in the optimizer we may want to move work to exit branches, which needs jumps.
Unifying branches and jumps also simplifies the tier 2 interpreter and the JIT compiler.
So, let's merge jumps and branches, as follows:
- Convert most, if not all jumps in the tier 2 code to
DEOPT_IF
s inbytecodes.c
- Convert deopts into jumps internally to allow work like
SET_IP
to be sunk into exit branches.
See also #111610
Linked PRs
Metadata
Metadata
Assignees
Labels
(Objects, Python, Grammar, and Parser dirs)(Objects, Python, Grammar, and Parser dirs)Performance or resource usagePerformance or resource usage