cpython/Objects
mpage 2e95c5ba3b
gh-115999: Implement thread-local bytecode and enable specialization for BINARY_OP (#123926)
Each thread specializes a thread-local copy of the bytecode, created on the first RESUME, in free-threaded builds. All copies of the bytecode for a code object are stored in the co_tlbc array on the code object. Threads reserve a globally unique index identifying its copy of the bytecode in all co_tlbc arrays at thread creation and release the index at thread destruction. The first entry in every co_tlbc array always points to the "main" copy of the bytecode that is stored at the end of the code object. This ensures that no bytecode is copied for programs that do not use threads.

Thread-local bytecode can be disabled at runtime by providing either -X tlbc=0 or PYTHON_TLBC=0. Disabling thread-local bytecode also disables specialization.

Concurrent modifications to the bytecode made by the specializing interpreter and instrumentation use atomics, with specialization taking care not to overwrite an instruction that was instrumented concurrently.
2024-11-04 11:13:32 -08:00
..
clinic gh-90370: Argument Clinic: avoid temporary tuple creation for varargs (#126064) 2024-10-31 11:37:03 +01:00
mimalloc gh-123826: Fix unused function warnings in mimalloc on NetBSD (#123827) 2024-09-09 13:22:28 -04:00
stringlib gh-115754: Use Py_GetConstant(Py_CONSTANT_EMPTY_STR) (#125194) 2024-10-09 17:15:23 +02:00
abstract.c gh-115754: Use Py_GetConstant(Py_CONSTANT_EMPTY_STR) (#125194) 2024-10-09 17:15:23 +02:00
boolobject.c gh-122982: Extend the deprecation period for bool inversion by two years (#123306) 2024-08-25 12:24:44 -07:00
bytearrayobject.c gh-111178: Fix function signatures in bytearrayobject.c (#124940) 2024-10-04 11:59:51 +02:00
bytes_methods.c gh-121165: protect macro expansion of ADJUST_INDICES with do-while(0) (#121166) 2024-07-02 16:27:51 +05:30
bytesobject.c GH-125174: Make immortal objects more robust, following design from PEP 683 (GH-125251) 2024-10-10 18:19:08 +01:00
call.c gh-106320: Remove _PyFunction_Vectorcall() API (#107071) 2023-07-22 21:44:33 +00:00
capsule.c gh-124538: Fix crash when using gc.get_referents on an untracked capsule object (#124559) 2024-09-26 12:29:43 +02:00
cellobject.c gh-111178: Fix function signatures in cellobject.c (#125182) 2024-10-09 16:13:55 +02:00
classobject.c gh-111178: Fix function signatures in classobject.c (#124943) 2024-10-04 12:00:00 +02:00
codeobject.c gh-115999: Implement thread-local bytecode and enable specialization for BINARY_OP (#123926) 2024-11-04 11:13:32 -08:00
complexobject.c gh-119771: Set errno on overflows in _Py_c_pow() (#120256) 2024-09-18 10:39:11 +02:00
descrobject.c bpo-24766: doc= argument to subclasses of property not handled correctly (GH-2487) 2024-06-10 08:55:49 +00:00
dictnotes.txt bpo-46845: Reduce dict size when all keys are Unicode (GH-31564) 2022-03-02 08:09:28 +09:00
dictobject.c gh-116938: Fix dict.update docstring and remove erraneous full stop from dict documentation (#125421) 2024-10-29 23:00:04 +00:00
enumobject.c gh-106320: Create pycore_modsupport.h header file (#106355) 2023-07-03 09:39:11 +00:00
exceptions.c gh-115754: Use Py_GetConstant(Py_CONSTANT_EMPTY_STR) (#125194) 2024-10-09 17:15:23 +02:00
fileobject.c Replace PyObject_Del with PyObject_Free (#122453) 2024-08-01 14:12:33 +02:00
floatobject.c gh-120026: soft deprecate Py_HUGE_VAL macro (#120027) 2024-11-01 22:04:31 +00:00
frameobject.c gh-115999: Implement thread-local bytecode and enable specialization for BINARY_OP (#123926) 2024-11-04 11:13:32 -08:00
funcobject.c gh-126072: do not add None to co_consts if there is no docstring (GH-126101) 2024-10-30 09:01:09 +00:00
genericaliasobject.c gh-119180: Add evaluate functions for type params and type aliases (#122212) 2024-07-27 17:24:10 +00:00
genobject.c gh-111178: Fix function signatures in genobject.c (#124970) 2024-10-05 09:56:44 +02:00
iterobject.c gh-106320: Remove private _PyEval function (#108433) 2023-08-24 20:25:22 +02:00
listobject.c gh-125196: PyUnicodeWriter_Discard(NULL) does nothing (#125222) 2024-10-09 23:32:02 +00:00
listsort.txt GH-116939: Rewrite binarysort() (#116940) 2024-03-21 22:27:25 -05:00
lnotab_notes.txt Document the co_lines method on code objects (#113682) 2024-01-03 19:29:24 +00:00
longobject.c Use _PyLong_GetOne() and _PyLong_GetZero() in long_invmod() (#125044) 2024-10-07 19:54:42 +02:00
memoryobject.c gh-126012: Add __class_getitem__ to memoryview (#126013) 2024-10-27 13:36:03 +03:00
methodobject.c gh-111178: Fix function signatures in methodobject.c (#124902) 2024-10-02 17:24:10 +02:00
moduleobject.c gh-123930: Better error for "from imports" when script shadows module (#123929) 2024-10-24 12:11:12 -07:00
namespaceobject.c gh-108191: Add support of positional argument in SimpleNamespace constructor (GH-108195) 2024-04-25 00:39:54 +03:00
object_layout_312.gv GH-115776: Embed the values array into the object, for "normal" Python objects. (GH-116115) 2024-04-02 11:59:21 +01:00
object_layout_312.png GH-115776: Embed the values array into the object, for "normal" Python objects. (GH-116115) 2024-04-02 11:59:21 +01:00
object_layout_313.gv GH-115776: Embed the values array into the object, for "normal" Python objects. (GH-116115) 2024-04-02 11:59:21 +01:00
object_layout_313.png GH-115776: Embed the values array into the object, for "normal" Python objects. (GH-116115) 2024-04-02 11:59:21 +01:00
object_layout_full_312.gv GH-96068: Document object layout (GH-96069) 2022-08-23 13:55:43 +01:00
object_layout_full_312.png GH-96068: Document object layout (GH-96069) 2022-08-23 13:55:43 +01:00
object_layout_full_313.gv GH-115776: Embed the values array into the object, for "normal" Python objects. (GH-116115) 2024-04-02 11:59:21 +01:00
object_layout_full_313.png GH-115776: Embed the values array into the object, for "normal" Python objects. (GH-116115) 2024-04-02 11:59:21 +01:00
object_layout.md GH-115776: Allow any fixed sized object to have inline values (GH-123192) 2024-08-21 15:52:04 +01:00
object.c gh-125286: Share the Main Refchain With Legacy Interpreters (gh-125709) 2024-10-23 10:10:06 -06:00
obmalloc.c gh-122697: Fix free-threading memory leaks at shutdown (#122703) 2024-08-08 12:48:17 -04:00
odictobject.c gh-119004: fix a crash in equality testing between OrderedDict (#121329) 2024-09-23 18:44:36 -05:00
picklebufobject.c gh-104922: remove PY_SSIZE_T_CLEAN (#106315) 2023-07-02 15:07:46 +09:00
rangeobject.c gh-111178: fix some USAN failures - mismatched function pointers (GH-123004) 2024-09-27 23:51:50 +02:00
README Issue #18093: Factor out the programs that embed the runtime 2014-07-25 21:52:14 +10:00
setobject.c gh-90370: Argument Clinic: avoid temporary tuple creation for varargs (#126064) 2024-10-31 11:37:03 +01:00
sliceobject.c gh-125063: Emit slices as constants in the bytecode compiler (#125064) 2024-10-08 13:18:39 -04:00
structseq.c GH-125174: Make immortal objects more robust, following design from PEP 683 (GH-125251) 2024-10-10 18:19:08 +01:00
tupleobject.c gh-125196: Use PyUnicodeWriter for repr(tuple) (#125242) 2024-10-10 10:20:53 +00:00
typeobject.c gh-115999: Implement thread-local bytecode and enable specialization for BINARY_OP (#123926) 2024-11-04 11:13:32 -08:00
typeslots.inc gh-124153: Implement PyType_GetBaseByToken() and Py_tp_token slot (GH-124163) 2024-09-18 09:18:19 +02:00
typeslots.py gh-124153: Implement PyType_GetBaseByToken() and Py_tp_token slot (GH-124163) 2024-09-18 09:18:19 +02:00
typevarobject.c gh-124787: Fix TypeAliasType and incorrect type_params (#124795) 2024-10-11 17:39:18 +03:00
unicodectype.c bpo-46670: Remove unused macros in the Objects directory (GH-31193) 2022-02-07 16:21:41 +01:00
unicodeobject.c gh-125286: Share the Main Refchain With Legacy Interpreters (gh-125709) 2024-10-23 10:10:06 -06:00
unicodetype_db.h closes gh-124016: update Unicode to 16.0.0 (#124017) 2024-09-13 07:47:04 -07:00
unionobject.c gh-119180: Add evaluate functions for type params and type aliases (#122212) 2024-07-27 17:24:10 +00:00
weakrefobject.c gh-111178: Fix function signatures in weakrefobject.c (#124903) 2024-10-02 15:01:23 +00:00

Source files for various builtin objects