mirror of
https://github.com/python/cpython.git
synced 2025-12-10 11:00:14 +00:00
bpo-27129: Use instruction offsets, not byte offsets, in bytecode and internally. (GH-25069)
* Use instruction offset, rather than bytecode offset. Streamlines interpreter dispatch a bit, and removes most EXTENDED_ARGs for jumps. * Change some uses of PyCode_Addr2Line to PyFrame_GetLineNumber
This commit is contained in:
parent
2ac0515027
commit
fcb55c0037
14 changed files with 4568 additions and 4569 deletions
|
|
@ -357,7 +357,7 @@ _PyGen_yf(PyGenObject *gen)
|
|||
return NULL;
|
||||
}
|
||||
|
||||
if (code[f->f_lasti + sizeof(_Py_CODEUNIT)] != YIELD_FROM)
|
||||
if (code[(f->f_lasti+1)*sizeof(_Py_CODEUNIT)] != YIELD_FROM)
|
||||
return NULL;
|
||||
assert(f->f_stackdepth > 0);
|
||||
yf = f->f_valuestack[f->f_stackdepth-1];
|
||||
|
|
@ -481,7 +481,7 @@ _gen_throw(PyGenObject *gen, int close_on_genexit,
|
|||
Py_DECREF(ret);
|
||||
/* Termination repetition of YIELD_FROM */
|
||||
assert(gen->gi_frame->f_lasti >= 0);
|
||||
gen->gi_frame->f_lasti += sizeof(_Py_CODEUNIT);
|
||||
gen->gi_frame->f_lasti += 1;
|
||||
if (_PyGen_FetchStopIterationValue(&val) == 0) {
|
||||
ret = gen_send(gen, val);
|
||||
Py_DECREF(val);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue