summaryrefslogtreecommitdiffstats
path: root/Python/executor_cases.c.h
diff options
context:
space:
mode:
authorJelle Zijlstra <jelle.zijlstra@gmail.com>2024-05-22 00:46:39 (GMT)
committerGitHub <noreply@github.com>2024-05-22 00:46:39 (GMT)
commit98e855fcc1f1d490c803565e84cb611b3f057e45 (patch)
tree53f19fb0244fa8c43e53534c31842adf5b65ebc2 /Python/executor_cases.c.h
parent506b1a3ff66a41c72d205c8e4cba574e439d8e76 (diff)
downloadcpython-98e855fcc1f1d490c803565e84cb611b3f057e45.zip
cpython-98e855fcc1f1d490c803565e84cb611b3f057e45.tar.gz
cpython-98e855fcc1f1d490c803565e84cb611b3f057e45.tar.bz2
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>
Diffstat (limited to 'Python/executor_cases.c.h')
-rw-r--r--Python/executor_cases.c.h15
1 files changed, 13 insertions, 2 deletions
diff --git a/Python/executor_cases.c.h b/Python/executor_cases.c.h
index 347a1e6..a3d7af2 100644
--- a/Python/executor_cases.c.h
+++ b/Python/executor_cases.c.h
@@ -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;