Add the co_extra field and accompanying APIs to code objects.
This completes PEP 523.
diff --git a/Python/ceval.c b/Python/ceval.c
index bf19a5b..9109ea5 100644
--- a/Python/ceval.c
+++ b/Python/ceval.c
@@ -5608,3 +5608,17 @@
}
#endif
+
+Py_ssize_t
+_PyEval_RequestCodeExtraIndex(freefunc free)
+{
+ PyThreadState *tstate = PyThreadState_Get();
+ Py_ssize_t new_index;
+
+ if (tstate->co_extra_user_count == MAX_CO_EXTRA_USERS - 1) {
+ return -1;
+ }
+ new_index = tstate->co_extra_user_count++;
+ tstate->co_extra_freefuncs[new_index] = free;
+ return new_index;
+}