mirror of
https://github.com/python/cpython.git
synced 2025-12-08 06:10:17 +00:00
gh-119180: Add LOAD_COMMON_CONSTANT opcode (#119321)
The PEP 649 implementation will require a way to load NotImplementedError from the bytecode. @markshannon suggested implementing this by converting LOAD_ASSERTION_ERROR into a more general mechanism for loading constants. This PR adds this new opcode. I will work on the rest of the implementation of the PEP separately. Co-authored-by: Irit Katriel <1055913+iritkatriel@users.noreply.github.com>
This commit is contained in:
parent
506b1a3ff6
commit
98e855fcc1
22 changed files with 337 additions and 288 deletions
15
Python/executor_cases.c.h
generated
15
Python/executor_cases.c.h
generated
|
|
@ -1162,9 +1162,20 @@
|
|||
break;
|
||||
}
|
||||
|
||||
case _LOAD_ASSERTION_ERROR: {
|
||||
case _LOAD_COMMON_CONSTANT: {
|
||||
PyObject *value;
|
||||
value = Py_NewRef(PyExc_AssertionError);
|
||||
oparg = CURRENT_OPARG();
|
||||
// Keep in sync with _common_constants in opcode.py
|
||||
switch(oparg) {
|
||||
case CONSTANT_ASSERTIONERROR:
|
||||
value = PyExc_AssertionError;
|
||||
break;
|
||||
case CONSTANT_NOTIMPLEMENTEDERROR:
|
||||
value = PyExc_NotImplementedError;
|
||||
break;
|
||||
default:
|
||||
Py_FatalError("bad LOAD_COMMON_CONSTANT oparg");
|
||||
}
|
||||
stack_pointer[0] = value;
|
||||
stack_pointer += 1;
|
||||
break;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue