aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/Python/generated_cases.c.h
diff options
context:
space:
mode:
authorMark Shannon <mark@hotpy.org>2024-08-27 10:49:39 +0100
committerGitHub <noreply@github.com>2024-08-27 10:49:39 +0100
commit54a05a46002ee1c9211f299df38f444f16866ef5 (patch)
treeeb4e94b3b62723936598a68bfcaef6eb6d66c389 /Python/generated_cases.c.h
parent89328f7b129a6e4d7164f954b976bf45da69f0b2 (diff)
downloadcpython-54a05a46002ee1c9211f299df38f444f16866ef5.tar.gz
cpython-54a05a46002ee1c9211f299df38f444f16866ef5.zip
GH-123232: Factor BINARY_SLICE and STORE_SLICE to handle stats properly for tier 2. (GH-123381)
Diffstat (limited to 'Python/generated_cases.c.h')
-rw-r--r--Python/generated_cases.c.h74
1 files changed, 46 insertions, 28 deletions
diff --git a/Python/generated_cases.c.h b/Python/generated_cases.c.h
index bf75cb901bc..9a751011678 100644
--- a/Python/generated_cases.c.h
+++ b/Python/generated_cases.c.h
@@ -371,25 +371,34 @@
_PyStackRef start;
_PyStackRef stop;
_PyStackRef res;
+ // _SPECIALIZE_BINARY_SLICE
+ {
+ // Placeholder until we implement BINARY_SLICE specialization
+ #if ENABLE_SPECIALIZATION
+ OPCODE_DEFERRED_INC(BINARY_SLICE);
+ #endif /* ENABLE_SPECIALIZATION */
+ }
+ // _BINARY_SLICE
stop = stack_pointer[-1];
start = stack_pointer[-2];
container = stack_pointer[-3];
- PyObject *slice = _PyBuildSlice_ConsumeRefs(PyStackRef_AsPyObjectSteal(start),
- PyStackRef_AsPyObjectSteal(stop));
- PyObject *res_o;
- OPCODE_DEFERRED_INC(BINARY_SLICE);
- // Can't use ERROR_IF() here, because we haven't
- // DECREF'ed container yet, and we still own slice.
- if (slice == NULL) {
- res_o = NULL;
- }
- else {
- res_o = PyObject_GetItem(PyStackRef_AsPyObjectBorrow(container), slice);
- Py_DECREF(slice);
+ {
+ PyObject *slice = _PyBuildSlice_ConsumeRefs(PyStackRef_AsPyObjectSteal(start),
+ PyStackRef_AsPyObjectSteal(stop));
+ PyObject *res_o;
+ // Can't use ERROR_IF() here, because we haven't
+ // DECREF'ed container yet, and we still own slice.
+ if (slice == NULL) {
+ res_o = NULL;
+ }
+ else {
+ res_o = PyObject_GetItem(PyStackRef_AsPyObjectBorrow(container), slice);
+ Py_DECREF(slice);
+ }
+ PyStackRef_CLOSE(container);
+ if (res_o == NULL) goto pop_3_error;
+ res = PyStackRef_FromPyObjectSteal(res_o);
}
- PyStackRef_CLOSE(container);
- if (res_o == NULL) goto pop_3_error;
- res = PyStackRef_FromPyObjectSteal(res_o);
stack_pointer[-3] = res;
stack_pointer += -2;
assert(WITHIN_STACK_BOUNDS());
@@ -7085,24 +7094,33 @@
_PyStackRef container;
_PyStackRef start;
_PyStackRef stop;
+ // _SPECIALIZE_STORE_SLICE
+ {
+ // Placeholder until we implement STORE_SLICE specialization
+ #if ENABLE_SPECIALIZATION
+ OPCODE_DEFERRED_INC(STORE_SLICE);
+ #endif /* ENABLE_SPECIALIZATION */
+ }
+ // _STORE_SLICE
stop = stack_pointer[-1];
start = stack_pointer[-2];
container = stack_pointer[-3];
v = stack_pointer[-4];
- PyObject *slice = _PyBuildSlice_ConsumeRefs(PyStackRef_AsPyObjectSteal(start),
- PyStackRef_AsPyObjectSteal(stop));
- OPCODE_DEFERRED_INC(STORE_SLICE);
- int err;
- if (slice == NULL) {
- err = 1;
- }
- else {
- err = PyObject_SetItem(PyStackRef_AsPyObjectBorrow(container), slice, PyStackRef_AsPyObjectBorrow(v));
- Py_DECREF(slice);
+ {
+ PyObject *slice = _PyBuildSlice_ConsumeRefs(PyStackRef_AsPyObjectSteal(start),
+ PyStackRef_AsPyObjectSteal(stop));
+ int err;
+ if (slice == NULL) {
+ err = 1;
+ }
+ else {
+ err = PyObject_SetItem(PyStackRef_AsPyObjectBorrow(container), slice, PyStackRef_AsPyObjectBorrow(v));
+ Py_DECREF(slice);
+ }
+ PyStackRef_CLOSE(v);
+ PyStackRef_CLOSE(container);
+ if (err) goto pop_4_error;
}
- PyStackRef_CLOSE(v);
- PyStackRef_CLOSE(container);
- if (err) goto pop_4_error;
stack_pointer += -4;
assert(WITHIN_STACK_BOUNDS());
DISPATCH();