mirror of https://github.com/python/cpython
GH-123232: Fix "not specialized" stats (GH-123236)
This commit is contained in:
parent
5fce482c9a
commit
0b0f7befad
|
@ -672,6 +672,7 @@ dummy_func(
|
||||||
PyObject *slice = _PyBuildSlice_ConsumeRefs(PyStackRef_AsPyObjectSteal(start),
|
PyObject *slice = _PyBuildSlice_ConsumeRefs(PyStackRef_AsPyObjectSteal(start),
|
||||||
PyStackRef_AsPyObjectSteal(stop));
|
PyStackRef_AsPyObjectSteal(stop));
|
||||||
PyObject *res_o;
|
PyObject *res_o;
|
||||||
|
OPCODE_DEFERRED_INC(BINARY_SLICE);
|
||||||
// Can't use ERROR_IF() here, because we haven't
|
// Can't use ERROR_IF() here, because we haven't
|
||||||
// DECREF'ed container yet, and we still own slice.
|
// DECREF'ed container yet, and we still own slice.
|
||||||
if (slice == NULL) {
|
if (slice == NULL) {
|
||||||
|
@ -689,6 +690,7 @@ dummy_func(
|
||||||
inst(STORE_SLICE, (v, container, start, stop -- )) {
|
inst(STORE_SLICE, (v, container, start, stop -- )) {
|
||||||
PyObject *slice = _PyBuildSlice_ConsumeRefs(PyStackRef_AsPyObjectSteal(start),
|
PyObject *slice = _PyBuildSlice_ConsumeRefs(PyStackRef_AsPyObjectSteal(start),
|
||||||
PyStackRef_AsPyObjectSteal(stop));
|
PyStackRef_AsPyObjectSteal(stop));
|
||||||
|
OPCODE_DEFERRED_INC(STORE_SLICE);
|
||||||
int err;
|
int err;
|
||||||
if (slice == NULL) {
|
if (slice == NULL) {
|
||||||
err = 1;
|
err = 1;
|
||||||
|
|
|
@ -797,6 +797,7 @@
|
||||||
PyObject *slice = _PyBuildSlice_ConsumeRefs(PyStackRef_AsPyObjectSteal(start),
|
PyObject *slice = _PyBuildSlice_ConsumeRefs(PyStackRef_AsPyObjectSteal(start),
|
||||||
PyStackRef_AsPyObjectSteal(stop));
|
PyStackRef_AsPyObjectSteal(stop));
|
||||||
PyObject *res_o;
|
PyObject *res_o;
|
||||||
|
OPCODE_DEFERRED_INC(BINARY_SLICE);
|
||||||
// Can't use ERROR_IF() here, because we haven't
|
// Can't use ERROR_IF() here, because we haven't
|
||||||
// DECREF'ed container yet, and we still own slice.
|
// DECREF'ed container yet, and we still own slice.
|
||||||
if (slice == NULL) {
|
if (slice == NULL) {
|
||||||
|
@ -826,6 +827,7 @@
|
||||||
v = stack_pointer[-4];
|
v = stack_pointer[-4];
|
||||||
PyObject *slice = _PyBuildSlice_ConsumeRefs(PyStackRef_AsPyObjectSteal(start),
|
PyObject *slice = _PyBuildSlice_ConsumeRefs(PyStackRef_AsPyObjectSteal(start),
|
||||||
PyStackRef_AsPyObjectSteal(stop));
|
PyStackRef_AsPyObjectSteal(stop));
|
||||||
|
OPCODE_DEFERRED_INC(STORE_SLICE);
|
||||||
int err;
|
int err;
|
||||||
if (slice == NULL) {
|
if (slice == NULL) {
|
||||||
err = 1;
|
err = 1;
|
||||||
|
|
|
@ -377,6 +377,7 @@
|
||||||
PyObject *slice = _PyBuildSlice_ConsumeRefs(PyStackRef_AsPyObjectSteal(start),
|
PyObject *slice = _PyBuildSlice_ConsumeRefs(PyStackRef_AsPyObjectSteal(start),
|
||||||
PyStackRef_AsPyObjectSteal(stop));
|
PyStackRef_AsPyObjectSteal(stop));
|
||||||
PyObject *res_o;
|
PyObject *res_o;
|
||||||
|
OPCODE_DEFERRED_INC(BINARY_SLICE);
|
||||||
// Can't use ERROR_IF() here, because we haven't
|
// Can't use ERROR_IF() here, because we haven't
|
||||||
// DECREF'ed container yet, and we still own slice.
|
// DECREF'ed container yet, and we still own slice.
|
||||||
if (slice == NULL) {
|
if (slice == NULL) {
|
||||||
|
@ -7090,6 +7091,7 @@
|
||||||
v = stack_pointer[-4];
|
v = stack_pointer[-4];
|
||||||
PyObject *slice = _PyBuildSlice_ConsumeRefs(PyStackRef_AsPyObjectSteal(start),
|
PyObject *slice = _PyBuildSlice_ConsumeRefs(PyStackRef_AsPyObjectSteal(start),
|
||||||
PyStackRef_AsPyObjectSteal(stop));
|
PyStackRef_AsPyObjectSteal(stop));
|
||||||
|
OPCODE_DEFERRED_INC(STORE_SLICE);
|
||||||
int err;
|
int err;
|
||||||
if (slice == NULL) {
|
if (slice == NULL) {
|
||||||
err = 1;
|
err = 1;
|
||||||
|
|
|
@ -144,8 +144,18 @@ print_spec_stats(FILE *out, OpcodeStats *stats)
|
||||||
fprintf(out, "opcode[BINARY_SLICE].specializable : 1\n");
|
fprintf(out, "opcode[BINARY_SLICE].specializable : 1\n");
|
||||||
fprintf(out, "opcode[STORE_SLICE].specializable : 1\n");
|
fprintf(out, "opcode[STORE_SLICE].specializable : 1\n");
|
||||||
for (int i = 0; i < 256; i++) {
|
for (int i = 0; i < 256; i++) {
|
||||||
if (_PyOpcode_Caches[i] && i != JUMP_BACKWARD) {
|
if (_PyOpcode_Caches[i]) {
|
||||||
fprintf(out, "opcode[%s].specializable : 1\n", _PyOpcode_OpName[i]);
|
/* Ignore jumps as they cannot be specialized */
|
||||||
|
switch (i) {
|
||||||
|
case POP_JUMP_IF_FALSE:
|
||||||
|
case POP_JUMP_IF_TRUE:
|
||||||
|
case POP_JUMP_IF_NONE:
|
||||||
|
case POP_JUMP_IF_NOT_NONE:
|
||||||
|
case JUMP_BACKWARD:
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
fprintf(out, "opcode[%s].specializable : 1\n", _PyOpcode_OpName[i]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
PRINT_STAT(i, specialization.success);
|
PRINT_STAT(i, specialization.success);
|
||||||
PRINT_STAT(i, specialization.failure);
|
PRINT_STAT(i, specialization.failure);
|
||||||
|
|
Loading…
Reference in New Issue