cpython/Python
Guido van Rossum bcce5e2718
gh-109039: Branch prediction for Tier 2 interpreter (#109038)
This adds a 16-bit inline cache entry to the conditional branch instructions POP_JUMP_IF_{FALSE,TRUE,NONE,NOT_NONE} and their instrumented variants, which is used to keep track of the branch direction.

Each time we encounter these instructions we shift the cache entry left by one and set the bottom bit to whether we jumped.

Then when it's time to translate such a branch to Tier 2 uops, we use the bit count from the cache entry to decided whether to continue translating the "didn't jump" branch or the "jumped" branch.

The counter is initialized to a pattern of alternating ones and zeros to avoid bias.

The .pyc file magic number is updated. There's a new test, some fixes for existing tests, and a few miscellaneous cleanups.
2023-09-11 18:20:24 +00:00
..
clinic gh-108753: Enhance pystats (#108754) 2023-09-06 15:54:59 +00:00
deepfreeze
frozen_modules
_warnings.c gh-106320: Remove private _PyTraceback functions (#108453) 2023-08-24 23:35:47 +00:00
abstract_interp_cases.c.h gh-109118: Fix runtime crash when NameError happens in PEP 695 function (#109123) 2023-09-09 02:49:20 +00:00
adaptive.md
asdl.c
asm_trampoline.S
assemble.c gh-108444: Replace _PyLong_AsInt() with PyLong_AsInt() (#108459) 2023-08-25 01:01:30 +02:00
ast.c GH-91079: Rename C_RECURSION_LIMIT to Py_C_RECURSION_LIMIT (#108507) 2023-09-08 09:48:28 +00:00
ast_opt.c GH-91079: Rename C_RECURSION_LIMIT to Py_C_RECURSION_LIMIT (#108507) 2023-09-08 09:48:28 +00:00
ast_unparse.c gh-100227: Move _str_replace_inf to PyInterpreterState (gh-102333) 2023-02-28 14:16:39 -07:00
bltinmodule.c gh-108765: Python.h no longer includes <ctype.h> (#108831) 2023-09-03 18:54:27 +02:00
bootstrap_hash.c gh-106320: Remove private pylifecycle.h functions (#106400) 2023-07-04 09:41:43 +00:00
bytecodes.c gh-109039: Branch prediction for Tier 2 interpreter (#109038) 2023-09-11 18:20:24 +00:00
ceval.c GH-108390: Prevent non-local events being set with sys.monitoring.set_local_events() (GH-108420) 2023-09-05 08:03:53 +01:00
ceval_gil.c gh-108987: Fix _thread.start_new_thread() race condition (#109135) 2023-09-11 17:27:03 +02:00
ceval_macros.h GH-108614: Add RESUME_CHECK instruction (GH-108630) 2023-09-07 14:39:03 +01:00
codecs.c gh-108765: Python.h no longer includes <ctype.h> (#108831) 2023-09-03 18:54:27 +02:00
compile.c gh-106320: Remove private _PyErr_WriteUnraisableMsg() (#108863) 2023-09-05 01:54:55 +02:00
condvar.h
context.c GH-84436: Skip refcounting for known immortals (GH-107605) 2023-08-04 16:24:50 -07:00
dtoa.c gh-104263: Rely on Py_NAN and introduce Py_INFINITY (GH-104202) 2023-05-10 17:44:52 +01:00
dup2.c gh-108765: Python.h no longer includes <unistd.h> (#108783) 2023-09-02 16:50:18 +02:00
dynamic_annotations.c
dynload_hpux.c
dynload_shlib.c
dynload_stub.c
dynload_win.c gh-108765: Python.h no longer includes <ctype.h> (#108831) 2023-09-03 18:54:27 +02:00
emscripten_signal.c GH-108614: Unbreak emscripten build (GH-109132) 2023-09-08 17:54:45 +01:00
errors.c gh-108765: Python.h no longer includes <ctype.h> (#108831) 2023-09-03 18:54:27 +02:00
executor.c GH-108614: Remove TIER_ONE and TIER_TWO from _PUSH_FRAME (GH-108725) 2023-09-04 11:36:57 +01:00
executor_cases.c.h gh-109118: Fix runtime crash when NameError happens in PEP 695 function (#109123) 2023-09-09 02:49:20 +00:00
fileutils.c gh-107913: Fix possible losses of OSError error codes (GH-107930) 2023-08-27 00:35:06 +03:00
flowgraph.c gh-108444: Replace _PyLong_AsInt() with PyLong_AsInt() (#108459) 2023-08-25 01:01:30 +02:00
formatter_unicode.c gh-92536: Remove PyUnicode_READY() calls (#105210) 2023-06-02 01:33:17 +02:00
frame.c gh-107149: Make PyUnstable_ExecutableKinds public (#108440) 2023-08-31 09:56:06 +02:00
frozen.c GH-108716: Turn off deep-freezing of code objects. (GH-108722) 2023-09-08 10:34:40 +01:00
frozenmain.c gh-106320: Remove private _PyInterpreterState functions (#106325) 2023-07-02 01:39:38 +00:00
future.c gh-106320: Remove more private _PyUnicode C API functions (#106382) 2023-07-03 22:35:46 +00:00
generated_cases.c.h gh-109039: Branch prediction for Tier 2 interpreter (#109038) 2023-09-11 18:20:24 +00:00
getargs.c gh-108765: Python.h no longer includes <ctype.h> (#108831) 2023-09-03 18:54:27 +02:00
getcompiler.c
getcopyright.c
getopt.c
getplatform.c
getversion.c
hamt.c gh-106320: Remove private PyLong C API functions (#108429) 2023-08-24 18:53:50 +02:00
hashtable.c gh-108634: Py_TRACE_REFS uses a hash table (#108663) 2023-08-31 18:33:34 +02:00
import.c GH-108716: Turn off deep-freezing of code objects. (GH-108722) 2023-09-08 10:34:40 +01:00
importdl.c gh-106320: Remove private _PyErr C API functions (#106356) 2023-07-03 10:48:50 +00:00
importdl.h gh-106210 Remove Emscripten import trampoline (#106211) 2023-06-29 17:20:49 -07:00
initconfig.c gh-108753: Enhance pystats (#108754) 2023-09-06 15:54:59 +00:00
instrumentation.c gh-109039: Branch prediction for Tier 2 interpreter (#109038) 2023-09-11 18:20:24 +00:00
intrinsics.c gh-108765: Cleanup #include in Python/*.c files (#108977) 2023-09-06 15:56:08 +02:00
legacy_tracing.c gh-108765: Cleanup #include in Python/*.c files (#108977) 2023-09-06 15:56:08 +02:00
marshal.c gh-106320: Move private _PySet API to the internal API (#107041) 2023-07-22 17:04:34 +02:00
modsupport.c bpo-42327: C API: Add PyModule_Add() function (GH-23443) 2023-07-18 09:42:05 +03:00
mysnprintf.c
mystrtoul.c gh-108765: Python.h no longer includes <ctype.h> (#108831) 2023-09-03 18:54:27 +02:00
opcode_targets.h GH-108614: Add RESUME_CHECK instruction (GH-108630) 2023-09-07 14:39:03 +01:00
optimizer.c gh-109039: Branch prediction for Tier 2 interpreter (#109038) 2023-09-11 18:20:24 +00:00
optimizer_analysis.c gh-105481: remove regen-opcode. Generated _PyOpcode_Caches in regen-cases. (#108367) 2023-08-23 18:39:00 +01:00
pathconfig.c gh-108765: Cleanup #include in Python/*.c files (#108977) 2023-09-06 15:56:08 +02:00
perf_trampoline.c gh-108765: Cleanup #include in Python/*.c files (#108977) 2023-09-06 15:56:08 +02:00
preconfig.c gh-106320: Remove private pylifecycle.h functions (#106400) 2023-07-04 09:41:43 +00:00
pyarena.c
pyctype.c
pyfpe.c
pyhash.c gh-106320: Move private _PyHash API to the internal C API (#107026) 2023-07-22 13:49:37 +00:00
pylifecycle.c GH-108716: Turn off deep-freezing of code objects. (GH-108722) 2023-09-08 10:34:40 +01:00
pymath.c
pystate.c gh-108987: Fix _thread.start_new_thread() race condition (#109135) 2023-09-11 17:27:03 +02:00
pystrcmp.c gh-108767: Replace ctype.h functions with pyctype.h functions (#108772) 2023-09-01 18:36:53 +02:00
pystrhex.c gh-108765: pystrhex: Replace stdlib.h abs() with Py_ABS() (#108830) 2023-09-02 23:15:54 +02:00
pystrtod.c gh-108765: Cleanup #include in Python/*.c files (#108977) 2023-09-06 15:56:08 +02:00
Python-ast.c GH-91079: Rename C_RECURSION_LIMIT to Py_C_RECURSION_LIMIT (#108507) 2023-09-08 09:48:28 +00:00
Python-tokenize.c gh-107015: Remove async_hacks from the tokenizer (#107018) 2023-07-26 16:34:15 +01:00
pythonrun.c gh-109179: Fix traceback display for SyntaxErrors with notes (#109197) 2023-09-11 19:18:34 +01:00
pytime.c gh-108765: Python.h no longer includes <sys/time.h> (#108775) 2023-09-02 17:51:19 +02:00
README
specialize.c gh-109039: Branch prediction for Tier 2 interpreter (#109038) 2023-09-11 18:20:24 +00:00
stdlib_module_names.h gh-105481: generate _specializations and _specialized_instructions from bytecodes.c (#105913) 2023-06-19 23:47:04 +01:00
structmember.c gh-106869: Use new PyMemberDef constant names (#106871) 2023-07-25 15:28:30 +02:00
suggestions.c gh-108765: Cleanup #include in Python/*.c files (#108977) 2023-09-06 15:56:08 +02:00
symtable.c gh-109207: Fix SystemError when printing symtable entry object. (GH-109225) 2023-09-10 15:04:24 +03:00
sysmodule.c gh-108753: Enhance pystats (#108754) 2023-09-06 15:54:59 +00:00
thread.c gh-108765: Cleanup #include in Python/*.c files (#108977) 2023-09-06 15:56:08 +02:00
thread_nt.h
thread_pthread.h gh-101538: Add experimental wasi-threads build (#101537) 2023-06-22 11:26:10 -07:00
thread_pthread_stubs.h gh-108765: Cleanup #include in Python/*.c files (#108977) 2023-09-06 15:56:08 +02:00
traceback.c gh-106922: Fix error location for constructs with spaces and parentheses (#108959) 2023-09-08 17:18:35 +01:00
tracemalloc.c gh-108765: Cleanup #include in Python/*.c files (#108977) 2023-09-06 15:56:08 +02:00

Miscellaneous source files for the main Python shared library