mirror of
https://github.com/python/cpython.git
synced 2025-09-04 16:01:10 +00:00
GH-98686: Quicken everything (GH-98687)
This commit is contained in:
parent
18fc232e07
commit
276d77724f
21 changed files with 144 additions and 239 deletions
|
@ -143,7 +143,7 @@ lltrace_instruction(_PyInterpreterFrame *frame,
|
|||
const char *opname = _PyOpcode_OpName[opcode];
|
||||
assert(opname != NULL);
|
||||
int offset = (int)(next_instr - _PyCode_CODE(frame->f_code));
|
||||
if (HAS_ARG(opcode)) {
|
||||
if (HAS_ARG(_PyOpcode_Deopt[opcode])) {
|
||||
printf("%d: %s %d\n", offset * 2, opname, oparg);
|
||||
}
|
||||
else {
|
||||
|
@ -1165,14 +1165,7 @@ handle_eval_breaker:
|
|||
TARGET(NOP) {
|
||||
DISPATCH();
|
||||
}
|
||||
|
||||
TARGET(RESUME) {
|
||||
_PyCode_Warmup(frame->f_code);
|
||||
GO_TO_INSTRUCTION(RESUME_QUICK);
|
||||
}
|
||||
|
||||
TARGET(RESUME_QUICK) {
|
||||
PREDICTED(RESUME_QUICK);
|
||||
assert(tstate->cframe == &cframe);
|
||||
assert(frame == cframe.current_frame);
|
||||
if (_Py_atomic_load_relaxed_int32(eval_breaker) && oparg < 2) {
|
||||
|
@ -1710,7 +1703,7 @@ handle_eval_breaker:
|
|||
PyObject *list = PEEK(oparg);
|
||||
if (_PyList_AppendTakeRef((PyListObject *)list, v) < 0)
|
||||
goto error;
|
||||
PREDICT(JUMP_BACKWARD_QUICK);
|
||||
PREDICT(JUMP_BACKWARD);
|
||||
DISPATCH();
|
||||
}
|
||||
|
||||
|
@ -1722,7 +1715,7 @@ handle_eval_breaker:
|
|||
Py_DECREF(v);
|
||||
if (err != 0)
|
||||
goto error;
|
||||
PREDICT(JUMP_BACKWARD_QUICK);
|
||||
PREDICT(JUMP_BACKWARD);
|
||||
DISPATCH();
|
||||
}
|
||||
|
||||
|
@ -2908,7 +2901,7 @@ handle_eval_breaker:
|
|||
if (_PyDict_SetItem_Take2((PyDictObject *)map, key, value) != 0) {
|
||||
goto error;
|
||||
}
|
||||
PREDICT(JUMP_BACKWARD_QUICK);
|
||||
PREDICT(JUMP_BACKWARD);
|
||||
DISPATCH();
|
||||
}
|
||||
|
||||
|
@ -3576,8 +3569,11 @@ handle_eval_breaker:
|
|||
}
|
||||
|
||||
TARGET(JUMP_BACKWARD) {
|
||||
_PyCode_Warmup(frame->f_code);
|
||||
GO_TO_INSTRUCTION(JUMP_BACKWARD_QUICK);
|
||||
PREDICTED(JUMP_BACKWARD);
|
||||
assert(oparg < INSTR_OFFSET());
|
||||
JUMPBY(-oparg);
|
||||
CHECK_EVAL_BREAKER();
|
||||
DISPATCH();
|
||||
}
|
||||
|
||||
TARGET(POP_JUMP_IF_FALSE) {
|
||||
|
@ -3707,14 +3703,6 @@ handle_eval_breaker:
|
|||
DISPATCH();
|
||||
}
|
||||
|
||||
TARGET(JUMP_BACKWARD_QUICK) {
|
||||
PREDICTED(JUMP_BACKWARD_QUICK);
|
||||
assert(oparg < INSTR_OFFSET());
|
||||
JUMPBY(-oparg);
|
||||
CHECK_EVAL_BREAKER();
|
||||
DISPATCH();
|
||||
}
|
||||
|
||||
TARGET(GET_LEN) {
|
||||
// PUSH(len(TOS))
|
||||
Py_ssize_t len_i = PyObject_Length(TOP());
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue