Mark Shannon
b04dfbbe4b
bpo-46409: Make generators in bytecode (GH-30633)
...
* Add RETURN_GENERATOR and JUMP_NO_INTERRUPT opcodes.
* Trim frame and generator by word each.
* Minor refactor of frame.c
* Update test.test_sys to account for smaller frames.
* Treat generator functions as normal functions when evaluating and specializing.
2022-01-20 11:46:39 +00:00
Kumar Aditya
a4bc2218d2
bpo-46405: fix msvc compiler warnings (GH-30627)
2022-01-17 16:30:10 +00:00
Dennis Sweeney
7537f60087
bpo-45609: More specialization stats for STORE_SUBSCR (GH-30193)
2022-01-04 18:05:09 +00:00
Mark Shannon
efd6236d36
bpo-46072: Add top level stats struct (GH-30169)
2021-12-17 14:48:01 +00:00
Mark Shannon
86f42851c0
Better randomization of stats filenames. (GH-30145)
2021-12-16 15:56:01 +00:00
Brandt Bucher
62a8a0c522
bpo-45829: Check `__getitem__`'s version for overflow before specializing (GH-30129)
...
* Check __getitem__'s version for overflow.
* Use SPEC_FAIL_OUT_OF_VERSIONS instead
2021-12-16 11:08:20 +00:00
Mark Shannon
342b93f9f2
bpo-46072: Add --with-pystats configure option to simplify gathering of VM stats (GH-30116)
...
* Simplify specialization stats collection macros.
* Add --enable-pystats option to configure.
* Update specialization summary script to handle larger number of kinds
2021-12-15 15:32:32 +00:00
Mark Shannon
3a60bfef49
bpo-44525: Specialize for calls to type and other builtin classes with 1 argument. (GH-29942)
2021-12-15 15:03:42 +00:00
Mark Shannon
9f8f45144b
bpo-44525: Split calls into PRECALL and CALL (GH-30011)
...
* Add 3 new opcodes for calls: PRECALL_METHOD, CALL_NO_KW, CALL_KW.
* Update specialization to handle new CALL opcodes.
* Specialize call to method descriptors.
* Remove old CALL opcodes: CALL_FUNCTION, CALL_METHOD, CALL_METHOD_KW, CALL_FUNCTION_KW.
2021-12-14 18:22:44 +00:00
Brandt Bucher
5de39f4b41
bpo-45510: Check both types when specializing subtraction (GH-29995)
2021-12-09 10:17:16 +09:00
Mark Shannon
8319114fee
bpo-45947: Place dict and values pointer at fixed (negative) offset just before GC header. (GH-29879)
...
* Place __dict__ immediately before GC header for plain Python objects.
* Fix up lazy dict creation logic to use managed dict pointers.
* Manage values pointer, placing them directly before managed dict pointers.
* Convert hint-based load/store attr specialization target managed dict classes.
* Specialize LOAD_METHOD for managed dict objects.
* Remove unsafe _PyObject_GC_Calloc function.
* Remove unsafe _PyObject_GC_Malloc() function.
* Add comment explaning use of Py_TPFLAGS_MANAGED_DICT.
2021-12-07 16:02:53 +00:00
Dennis Sweeney
03768c4d13
bpo-45885: Specialize COMPARE_OP (GH-29734)
...
* Add COMPARE_OP_ADAPTIVE adaptive instruction.
* Add COMPARE_OP_FLOAT_JUMP, COMPARE_OP_INT_JUMP and COMPARE_OP_STR_JUMP specialized instructions.
* Introduce and use _PyUnicode_Equal
2021-12-03 11:29:12 +00:00
Mark Shannon
135cabd328
bpo-44525: Copy free variables in bytecode to allow calls to inner functions to be specialized (GH-29595)
...
* Make internal APIs that take PyFrameConstructor take a PyFunctionObject instead.
* Add reference to function to frame, borrow references to builtins and globals.
* Add COPY_FREE_VARS instruction to allow specialization of calls to inner functions.
2021-11-23 09:53:24 +00:00
Dennis Sweeney
036fead695
bpo-45609: Specialize STORE_SUBSCR (GH-29242)
...
* Specialize STORE_SUBSCR for list[int], and dict[object]
* Adds _PyDict_SetItem_Take2 which consumes references to the key and values.
2021-11-19 10:30:37 +00:00
Mark Shannon
21fa7a3e8f
bpo-45829: Specialize BINARY_SUBSCR for __getitem__ implemented in Python. (GH-29592)
2021-11-18 11:02:14 +00:00
Dong-hee Na
345ba3f080
bpo-45510: Specialize BINARY_SUBTRACT (GH-29523)
2021-11-18 09:19:58 +00:00
Brandt Bucher
ec382fac0d
bpo-45636: Remove the old %-formatting fast-path (GH-29532)
2021-11-15 08:58:23 -08:00
Brandt Bucher
9178f533ff
bpo-45636: Merge all numeric operators (GH-29482)
2021-11-10 22:56:22 -08:00
Mark Shannon
bc85eb7a4f
bpo-45527: Don't count cache hits, just misses. (GH-29092)
2021-10-20 20:53:48 +02:00
Mark Shannon
8863a0fcc5
bpo-44525: Specialize simple Python calls. (GH-29033)
2021-10-20 16:08:28 +01:00
Ken Jin
3163e68c34
bpo-44525: Specialize ``CALL_FUNCTION`` for C function calls (GH-26934)
2021-10-20 00:16:36 +01:00
Dong-hee Na
fd03917786
bpo-45434: Include stdlib.h for specialize stat (GH-29015)
2021-10-18 17:31:18 +09:00
Dennis Sweeney
3b3d30e8f7
bpo-45367: Specialize BINARY_MULTIPLY (GH-28727)
2021-10-14 15:56:33 +01:00
Mark Shannon
a8b9350964
bpo-45340: Don't create object dictionaries unless actually needed (GH-28802)
...
* Never change types' cached keys. It could invalidate inline attribute objects.
* Lazily create object dictionaries.
* Update specialization of LOAD/STORE_ATTR.
* Don't update shared keys version for deletion of value.
* Update gdb support to handle instance values.
* Rename SPLIT_KEYS opcodes to INSTANCE_VALUE.
2021-10-13 14:19:34 +01:00
Christian Clauss
db693df3e1
Fix typos in the Python directory (GH-28767)
2021-10-06 15:55:27 -07:00
Mark Shannon
064464fc38
bpo-45219: Factor dictkey indexing (GH-28389)
2021-09-17 12:20:51 +01:00
Ken Jin
70bed6f993
bpo-45107: Make LOAD_METHOD_CLASS safer and faster, clean up comments (GH-28177)
...
* Improve comments
* Check cls is a type, remove dict calculation
2021-09-17 18:47:36 +08:00
Ken Jin
4857e53890
bpo-45203: fix compiler warnings (GH-28357)
...
Co-authored-by: Mark Shannon <mark@hotpy.org>
2021-09-17 17:48:44 +08:00
Mark Shannon
11cdf2a670
bpo-45203: Cleanup stats gathering code for LOAD_METHOD (GH-28352)
2021-09-15 14:55:49 +01:00
Mark Shannon
ee9c0527ae
Refine specialization stats (GH-27992)
2021-08-27 12:01:22 +01:00
Mark Shannon
d3eaf0cc5b
bpo-44945: Specialize BINARY_ADD (GH-27967)
2021-08-27 09:21:01 +01:00
Ken Jin
96346cb6d0
bpo-44889: Specialize LOAD_METHOD with PEP 659 adaptive interpreter (GH-27722)
...
Adds four new instructions:
* LOAD_METHOD_ADAPTIVE
* LOAD_METHOD_CACHED
* LOAD_METHOD_MODULE
* LOAD_METHOD_CLASS
2021-08-17 15:55:55 +01:00
Mark Shannon
4f51fa9e2d
bpo-44900: Add five superinstructions. (GH-27741)
...
* LOAD_FAST LOAD_FAST
* STORE_FAST LOAD_FAST
* LOAD_FAST LOAD_CONST
* LOAD_CONST LOAD_FAST
* STORE_FAST STORE_FAST
2021-08-16 12:23:13 +01:00
Irit Katriel
8ac0886091
bpo-44890: collect specialization stats if Py_DEBUG (GH-27731)
2021-08-12 12:15:06 +01:00
Irit Katriel
64a7812c17
Update test__opcode and _Py_GetSpecializationStats with recent specialization stat changes (GH-27728)
2021-08-11 17:34:01 +01:00
Mark Shannon
9816777861
Classify specialization failures. Provides more useful stats, with lower overhead. (GH-27701)
2021-08-10 14:53:05 +01:00
Mark Shannon
ac75f6bdd4
bpo-44826: Specialize STORE_ATTR (GH-27590)
...
* Generalize cache names for LOAD_ATTR to allow store and delete specializations.
* Factor out specialization of attribute dictionary access.
* Specialize STORE_ATTR.
2021-08-09 10:40:21 +01:00
Mark Shannon
c83919bd63
Add option to write specialization stats to files and script to summarize. (GH-27575)
...
* Add option to write stats to random file in a directory.
* Add script to summarize stats.
2021-08-04 11:39:52 +01:00
Mark Shannon
2116909b3e
Minor fixes to specialization stats. (GH-27457)
...
* Use class, not value for fail stats for BINARY_SUBSCR.
* Fix counts for unquickened instructions.
2021-07-29 20:50:03 +01:00
Irit Katriel
ddd1c418c0
bpo-44725 : expose specialization stats in python (GH-27192)
2021-07-29 17:26:53 +01:00
Irit Katriel
641345d636
bpo-26280: Port BINARY_SUBSCR to PEP 659 adaptive interpreter (GH-27043)
2021-07-15 13:13:12 +01:00
Mark Shannon
3623aaa78c
Add file describing how to add or modify specialized families of instructions. (GH-26954)
2021-07-01 13:13:05 +01:00
Mark Shannon
fb68791a26
bpo-44337: Improve LOAD_ATTR specialization (GH-26759)
...
* Specialize obj.__class__ with LOAD_ATTR_SLOT
* Specialize instance attribute lookup with attribute on class, provided attribute on class is not an overriding descriptor.
* Add stat for how many times the unquickened instruction has executed.
2021-06-21 11:49:21 +01:00
Mark Shannon
8ebd9447e9
Add extra stats for attribute misses (GH-26732)
2021-06-15 13:01:42 +01:00
Mark Shannon
eecbc7c390
bpo-44338: Port LOAD_GLOBAL to PEP 659 adaptive interpreter (GH-26638)
...
* Add specializations of LOAD_GLOBAL.
* Add more stats.
* Remove old opcache; it is no longer used.
* Add NEWS
2021-06-14 11:04:09 +01:00
Serhiy Storchaka
be8b631b7a
Add more const modifiers. (GH-26691)
2021-06-12 16:11:59 +03:00
Mark Shannon
e117c02837
bpo-44337: Port LOAD_ATTR to PEP 659 adaptive interpreter (GH-26595)
...
* Specialize LOAD_ATTR with LOAD_ATTR_SLOT and LOAD_ATTR_SPLIT_KEYS
* Move dict-common.h to internal/pycore_dict.h
* Add LOAD_ATTR_WITH_HINT specialized opcode.
* Quicken in function if loopy
* Specialize LOAD_ATTR for module attributes.
* Add specialization stats
2021-06-10 08:46:01 +01:00
Mark Shannon
001eb520b5
bpo-44187: Quickening infrastructure (GH-26264)
...
* Add co_firstinstr field to code object.
* Implement barebones quickening.
* Use non-quickened bytecode when tracing.
* Add NEWS item
* Add new file to Windows build.
* Don't specialize instructions with EXTENDED_ARG.
2021-06-07 18:38:06 +01:00