mirror of
https://github.com/python/cpython.git
synced 2025-08-04 08:59:19 +00:00
gh-116996: Add pystats about _Py_uop_analyse_and_optimize (GH-116997)
This commit is contained in:
parent
617158e078
commit
50369e6c34
5 changed files with 56 additions and 3 deletions
|
@ -139,6 +139,7 @@ remove_globals(_PyInterpreterFrame *frame, _PyUOpInstruction *buffer,
|
|||
PyInterpreterState *interp = _PyInterpreterState_GET();
|
||||
PyObject *builtins = frame->f_builtins;
|
||||
if (builtins != interp->builtins) {
|
||||
OPT_STAT_INC(remove_globals_builtins_changed);
|
||||
return 1;
|
||||
}
|
||||
PyObject *globals = frame->f_globals;
|
||||
|
@ -170,6 +171,7 @@ remove_globals(_PyInterpreterFrame *frame, _PyUOpInstruction *buffer,
|
|||
switch(opcode) {
|
||||
case _GUARD_BUILTINS_VERSION:
|
||||
if (incorrect_keys(inst, builtins)) {
|
||||
OPT_STAT_INC(remove_globals_incorrect_keys);
|
||||
return 0;
|
||||
}
|
||||
if (interp->rare_events.builtin_dict >= _Py_MAX_ALLOWED_BUILTINS_MODIFICATIONS) {
|
||||
|
@ -190,6 +192,7 @@ remove_globals(_PyInterpreterFrame *frame, _PyUOpInstruction *buffer,
|
|||
break;
|
||||
case _GUARD_GLOBALS_VERSION:
|
||||
if (incorrect_keys(inst, globals)) {
|
||||
OPT_STAT_INC(remove_globals_incorrect_keys);
|
||||
return 0;
|
||||
}
|
||||
uint64_t watched_mutations = get_mutations(globals);
|
||||
|
@ -238,6 +241,7 @@ remove_globals(_PyInterpreterFrame *frame, _PyUOpInstruction *buffer,
|
|||
globals = func->func_globals;
|
||||
builtins = func->func_builtins;
|
||||
if (builtins != interp->builtins) {
|
||||
OPT_STAT_INC(remove_globals_builtins_changed);
|
||||
return 1;
|
||||
}
|
||||
break;
|
||||
|
@ -358,6 +362,7 @@ optimize_uops(
|
|||
|
||||
_Py_UOpsContext context;
|
||||
_Py_UOpsContext *ctx = &context;
|
||||
uint32_t opcode = UINT16_MAX;
|
||||
|
||||
if (_Py_uop_abstractcontext_init(ctx) < 0) {
|
||||
goto out_of_space;
|
||||
|
@ -374,8 +379,7 @@ optimize_uops(
|
|||
this_instr++) {
|
||||
|
||||
int oparg = this_instr->oparg;
|
||||
uint32_t opcode = this_instr->opcode;
|
||||
|
||||
opcode = this_instr->opcode;
|
||||
_Py_UopsSymbol **stack_pointer = ctx->frame->stack_pointer;
|
||||
|
||||
#ifdef Py_DEBUG
|
||||
|
@ -410,6 +414,9 @@ out_of_space:
|
|||
error:
|
||||
DPRINTF(3, "\n");
|
||||
DPRINTF(1, "Encountered error in abstract interpreter\n");
|
||||
if (opcode <= MAX_UOP_ID) {
|
||||
OPT_ERROR_IN_OPCODE(opcode);
|
||||
}
|
||||
_Py_uop_abstractcontext_fini(ctx);
|
||||
return -1;
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue