Commit e0f7c10
authored
Add special cases for classmethod and staticmethod descriptors in
_PyObject_GetMethodStackRef() to avoid calling tp_descr_get, which
avoids reference count contention on the bound method and underlying
callable. This improves scaling when calling classmethods and
staticmethods from multiple threads.
Also refactor method_vectorcall in classobject.c into a new _PyObject_VectorcallPrepend() helper so that it can be used by
PyObject_VectorcallMethod as well.
1 parent 966fc81 commit e0f7c10
File tree
10 files changed
+201
-104
lines changed- Include/internal
- Misc/NEWS.d/next/Core_and_Builtins
- Objects
- Python
- Tools/ftscalingbench
10 files changed
+201
-104
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
65 | 65 | | |
66 | 66 | | |
67 | 67 | | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
68 | 76 | | |
69 | 77 | | |
70 | 78 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
46 | 46 | | |
47 | 47 | | |
48 | 48 | | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
49 | 54 | | |
50 | 55 | | |
51 | 56 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
895 | 895 | | |
896 | 896 | | |
897 | 897 | | |
898 | | - | |
| 898 | + | |
899 | 899 | | |
900 | 900 | | |
901 | 901 | | |
| |||
Lines changed: 2 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
828 | 828 | | |
829 | 829 | | |
830 | 830 | | |
| 831 | + | |
| 832 | + | |
| 833 | + | |
| 834 | + | |
| 835 | + | |
| 836 | + | |
| 837 | + | |
| 838 | + | |
| 839 | + | |
| 840 | + | |
| 841 | + | |
| 842 | + | |
| 843 | + | |
| 844 | + | |
| 845 | + | |
| 846 | + | |
| 847 | + | |
| 848 | + | |
| 849 | + | |
| 850 | + | |
| 851 | + | |
| 852 | + | |
| 853 | + | |
| 854 | + | |
| 855 | + | |
| 856 | + | |
| 857 | + | |
| 858 | + | |
| 859 | + | |
| 860 | + | |
| 861 | + | |
| 862 | + | |
| 863 | + | |
| 864 | + | |
| 865 | + | |
| 866 | + | |
| 867 | + | |
| 868 | + | |
| 869 | + | |
| 870 | + | |
| 871 | + | |
| 872 | + | |
| 873 | + | |
| 874 | + | |
| 875 | + | |
| 876 | + | |
| 877 | + | |
| 878 | + | |
| 879 | + | |
| 880 | + | |
| 881 | + | |
| 882 | + | |
| 883 | + | |
| 884 | + | |
831 | 885 | | |
832 | 886 | | |
833 | 887 | | |
| |||
838 | 892 | | |
839 | 893 | | |
840 | 894 | | |
841 | | - | |
| 895 | + | |
| 896 | + | |
842 | 897 | | |
843 | 898 | | |
844 | | - | |
845 | | - | |
| 899 | + | |
| 900 | + | |
| 901 | + | |
846 | 902 | | |
| 903 | + | |
847 | 904 | | |
848 | 905 | | |
| 906 | + | |
849 | 907 | | |
| 908 | + | |
| 909 | + | |
850 | 910 | | |
851 | | - | |
| 911 | + | |
| 912 | + | |
| 913 | + | |
| 914 | + | |
| 915 | + | |
| 916 | + | |
| 917 | + | |
| 918 | + | |
852 | 919 | | |
853 | 920 | | |
854 | | - | |
| 921 | + | |
| 922 | + | |
| 923 | + | |
855 | 924 | | |
856 | 925 | | |
857 | | - | |
858 | | - | |
859 | | - | |
860 | | - | |
| 926 | + | |
| 927 | + | |
| 928 | + | |
| 929 | + | |
861 | 930 | | |
862 | | - | |
863 | | - | |
864 | | - | |
865 | 931 | | |
| 932 | + | |
866 | 933 | | |
867 | 934 | | |
868 | 935 | | |
| |||
875 | 942 | | |
876 | 943 | | |
877 | 944 | | |
878 | | - | |
| 945 | + | |
| 946 | + | |
879 | 947 | | |
880 | | - | |
881 | | - | |
| 948 | + | |
| 949 | + | |
| 950 | + | |
882 | 951 | | |
| 952 | + | |
883 | 953 | | |
884 | 954 | | |
885 | 955 | | |
886 | | - | |
| 956 | + | |
887 | 957 | | |
888 | 958 | | |
889 | 959 | | |
890 | | - | |
| 960 | + | |
891 | 961 | | |
892 | 962 | | |
893 | 963 | | |
| 964 | + | |
894 | 965 | | |
895 | 966 | | |
896 | 967 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
52 | 52 | | |
53 | 53 | | |
54 | 54 | | |
55 | | - | |
56 | | - | |
57 | | - | |
58 | | - | |
59 | | - | |
60 | | - | |
61 | | - | |
62 | | - | |
63 | | - | |
64 | | - | |
65 | | - | |
66 | | - | |
67 | | - | |
68 | | - | |
69 | | - | |
70 | | - | |
71 | | - | |
72 | | - | |
73 | | - | |
74 | | - | |
75 | | - | |
76 | | - | |
77 | | - | |
78 | | - | |
79 | | - | |
80 | | - | |
81 | | - | |
82 | | - | |
83 | | - | |
84 | | - | |
85 | | - | |
86 | | - | |
87 | | - | |
88 | | - | |
89 | | - | |
90 | | - | |
91 | | - | |
92 | | - | |
93 | | - | |
94 | | - | |
95 | | - | |
96 | | - | |
97 | | - | |
98 | | - | |
99 | | - | |
100 | | - | |
101 | | - | |
102 | | - | |
| 55 | + | |
103 | 56 | | |
104 | 57 | | |
105 | 58 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1469 | 1469 | | |
1470 | 1470 | | |
1471 | 1471 | | |
| 1472 | + | |
1472 | 1473 | | |
1473 | 1474 | | |
1474 | 1475 | | |
| |||
1905 | 1906 | | |
1906 | 1907 | | |
1907 | 1908 | | |
| 1909 | + | |
| 1910 | + | |
| 1911 | + | |
| 1912 | + | |
| 1913 | + | |
| 1914 | + | |
| 1915 | + | |
1908 | 1916 | | |
1909 | 1917 | | |
1910 | 1918 | | |
| |||
0 commit comments