Lines Matching defs:interp

258 free_interpreter(PyInterpreterState *interp)
260 if (!interp->_static) {
261 PyMem_RawFree(interp);
274 init_interpreter(PyInterpreterState *interp,
279 if (interp->_initialized) {
284 interp->runtime = runtime;
286 assert(id > 0 || (id == 0 && interp == runtime->interpreters.main));
287 interp->id = id;
289 assert(runtime->interpreters.head == interp);
290 assert(next != NULL || (interp == runtime->interpreters.main));
291 interp->next = next;
293 _PyEval_InitState(&interp->ceval, pending_lock);
294 _PyGC_InitState(&interp->gc);
295 PyConfig_InitPythonConfig(&interp->config);
296 _PyType_InitCache(interp);
298 interp->_initialized = 1;
304 PyInterpreterState *interp;
341 interp = &runtime->_main_interpreter;
342 assert(interp->id == 0);
343 assert(interp->next == NULL);
344 assert(interp->_static);
346 interpreters->main = interp;
352 interp = alloc_interpreter();
353 if (interp == NULL) {
357 memcpy(interp, &initial._main_interpreter,
358 sizeof(*interp));
361 interp->_static = false;
372 interpreters->head = interp;
374 init_interpreter(interp, runtime, id, old_head, pending_lock);
377 return interp;
383 if (interp != NULL) {
384 free_interpreter(interp);
391 interpreter_clear(PyInterpreterState *interp, PyThreadState *tstate)
393 _PyRuntimeState *runtime = interp->runtime;
401 PyThreadState *p = interp->threads.head;
413 Py_CLEAR(interp->audit_hooks);
415 PyConfig_Clear(&interp->config);
416 Py_CLEAR(interp->codec_search_path);
417 Py_CLEAR(interp->codec_search_cache);
418 Py_CLEAR(interp->codec_error_registry);
419 Py_CLEAR(interp->modules);
420 Py_CLEAR(interp->modules_by_index);
421 Py_CLEAR(interp->builtins_copy);
422 Py_CLEAR(interp->importlib);
423 Py_CLEAR(interp->import_func);
424 Py_CLEAR(interp->dict);
426 Py_CLEAR(interp->before_forkers);
427 Py_CLEAR(interp->after_forkers_parent);
428 Py_CLEAR(interp->after_forkers_child);
431 _PyAST_Fini(interp);
432 _PyWarnings_Fini(interp);
433 _PyAtExit_Fini(interp);
441 _PyGC_Fini(interp);
446 PyDict_Clear(interp->sysdict);
447 PyDict_Clear(interp->builtins);
448 Py_CLEAR(interp->sysdict);
449 Py_CLEAR(interp->builtins);
458 PyInterpreterState_Clear(PyInterpreterState *interp)
462 // of 'interp'.
465 interpreter_clear(interp, current_tstate);
472 interpreter_clear(tstate->interp, tstate);
477 zapthreads(PyInterpreterState *interp, int check_current)
482 while ((tstate = interp->threads.head) != NULL) {
489 PyInterpreterState_Delete(PyInterpreterState *interp)
491 _PyRuntimeState *runtime = interp->runtime;
493 zapthreads(interp, 0);
495 _PyEval_FiniState(&interp->ceval);
506 if (*p == interp) {
510 if (interp->threads.head != NULL) {
513 *p = interp->next;
515 if (interpreters->main == interp) {
523 if (interp->id_mutex != NULL) {
524 PyThread_free_lock(interp->id_mutex);
526 free_interpreter(interp);
542 if (tstate != NULL && tstate->interp != interpreters->main) {
547 PyInterpreterState *interp = interpreters->head;
549 while (interp != NULL) {
550 if (interp == interpreters->main) {
552 interpreters->head = interp;
553 interp = interp->next;
557 PyInterpreterState_Clear(interp); // XXX must activate?
558 zapthreads(interp, 1);
559 if (interp->id_mutex != NULL) {
560 PyThread_free_lock(interp->id_mutex);
562 PyInterpreterState *prev_interp = interp;
563 interp = interp->next;
582 PyInterpreterState *interp = tstate->interp;
583 if (interp == NULL) {
586 return interp;
591 PyInterpreterState_GetID(PyInterpreterState *interp)
593 if (interp == NULL) {
597 return interp->id;
604 PyInterpreterState *interp = runtime->interpreters.head;
605 while (interp != NULL) {
606 int64_t id = PyInterpreterState_GetID(interp);
611 return interp;
613 interp = PyInterpreterState_Next(interp);
621 PyInterpreterState *interp = NULL;
625 interp = interp_look_up_id(runtime, requested_id);
628 if (interp == NULL && !PyErr_Occurred()) {
632 return interp;
637 _PyInterpreterState_IDInitref(PyInterpreterState *interp)
639 if (interp->id_mutex != NULL) {
642 interp->id_mutex = PyThread_allocate_lock();
643 if (interp->id_mutex == NULL) {
648 interp->id_refcount = 0;
654 _PyInterpreterState_IDIncref(PyInterpreterState *interp)
656 if (_PyInterpreterState_IDInitref(interp) < 0) {
660 PyThread_acquire_lock(interp->id_mutex, WAIT_LOCK);
661 interp->id_refcount += 1;
662 PyThread_release_lock(interp->id_mutex);
668 _PyInterpreterState_IDDecref(PyInterpreterState *interp)
670 assert(interp->id_mutex != NULL);
673 PyThread_acquire_lock(interp->id_mutex, WAIT_LOCK);
674 assert(interp->id_refcount != 0);
675 interp->id_refcount -= 1;
676 int64_t refcount = interp->id_refcount;
677 PyThread_release_lock(interp->id_mutex);
679 if (refcount == 0 && interp->requires_idref) {
681 PyThreadState *tstate = PyInterpreterState_ThreadHead(interp);
690 _PyInterpreterState_RequiresIDRef(PyInterpreterState *interp)
692 return interp->requires_idref;
696 _PyInterpreterState_RequireIDRef(PyInterpreterState *interp, int required)
698 interp->requires_idref = required ? 1 : 0;
702 _PyInterpreterState_GetMainModule(PyInterpreterState *interp)
704 if (interp->modules == NULL) {
708 return PyMapping_GetItemString(interp->modules, "__main__");
712 PyInterpreterState_GetDict(PyInterpreterState *interp)
714 if (interp->dict == NULL) {
715 interp->dict = PyDict_New();
716 if (interp->dict == NULL) {
721 return interp->dict;
765 PyInterpreterState *interp, uint64_t id,
772 assert(interp != NULL);
773 tstate->interp = interp;
778 assert(interp->threads.head == tstate);
792 tstate->recursion_limit = interp->ceval.recursion_limit,
793 tstate->recursion_remaining = interp->ceval.recursion_limit,
806 new_threadstate(PyInterpreterState *interp)
809 _PyRuntimeState *runtime = interp->runtime;
822 interp->threads.next_unique_id += 1;
823 uint64_t id = interp->threads.next_unique_id;
826 PyThreadState *old_head = interp->threads.head;
831 tstate = &interp->_initial_thread;
848 interp->threads.head = tstate;
850 init_threadstate(tstate, interp, id, old_head);
861 PyThreadState_New(PyInterpreterState *interp)
863 PyThreadState *tstate = new_threadstate(interp);
869 _PyThreadState_Prealloc(PyInterpreterState *interp)
871 return new_threadstate(interp);
885 _PyGILState_NoteThreadState(&tstate->interp->runtime->gilstate, tstate);
921 PyInterpreterState *interp = tstate->interp;
922 if (!interp->modules_by_index) {
923 interp->modules_by_index = PyList_New(0);
924 if (!interp->modules_by_index) {
929 while (PyList_GET_SIZE(interp->modules_by_index) <= def->m_base.m_index) {
930 if (PyList_Append(interp->modules_by_index, Py_None) < 0) {
936 return PyList_SetItem(interp->modules_by_index,
949 PyInterpreterState *interp = tstate->interp;
951 if (interp->modules_by_index &&
952 index < PyList_GET_SIZE(interp->modules_by_index) &&
953 module == PyList_GET_ITEM(interp->modules_by_index, index))
965 PyInterpreterState *interp = tstate->interp;
978 if (interp->modules_by_index == NULL) {
981 if (index > PyList_GET_SIZE(interp->modules_by_index)) {
986 return PyList_SetItem(interp->modules_by_index, index, Py_None);
991 _PyInterpreterState_ClearModules(PyInterpreterState *interp)
993 if (!interp->modules_by_index) {
998 for (i = 0; i < PyList_GET_SIZE(interp->modules_by_index); i++) {
999 PyObject *m = PyList_GET_ITEM(interp->modules_by_index, i);
1011 if (PyList_SetSlice(interp->modules_by_index,
1012 0, PyList_GET_SIZE(interp->modules_by_index),
1014 PyErr_WriteUnraisable(interp->modules_by_index);
1021 int verbose = _PyInterpreterState_GetConfig(tstate->interp)->verbose;
1074 PyInterpreterState *interp = tstate->interp;
1075 if (interp == NULL) {
1078 _PyRuntimeState *runtime = interp->runtime;
1085 interp->threads.head = tstate->next;
1109 struct _gilstate_runtime_state *gilstate = &tstate->interp->runtime->gilstate;
1131 struct _gilstate_runtime_state *gilstate = &tstate->interp->runtime->gilstate;
1157 PyInterpreterState *interp = tstate->interp;
1163 PyThreadState *list = interp->threads.head;
1174 interp->threads.head = tstate;
1222 if (check && check->interp == newts->interp && check != newts)
1271 return tstate->interp;
1315 PyInterpreterState *interp = _PyRuntimeState_GetThreadState(runtime)->interp;
1324 for (PyThreadState *tstate = interp->threads.head; tstate != NULL; tstate = tstate->next) {
1342 _PyEval_SignalAsyncExc(tstate->interp);
1365 PyInterpreterState_Next(PyInterpreterState *interp) {
1366 return interp->next;
1370 PyInterpreterState_ThreadHead(PyInterpreterState *interp) {
1371 return interp->threads.head;
1403 _PyRuntimeState *runtime = tstate->interp->runtime;
1464 _PyRuntimeState *runtime = tstate->interp->runtime;
1540 if (!_Py_IsMainInterpreter(tstate->interp)) {
1548 assert(tstate->interp != NULL);
1550 struct _gilstate_runtime_state *gilstate = &tstate->interp->runtime->gilstate;
1552 gilstate->autoInterpreterState = tstate->interp;
1567 _PyGILState_Fini(PyInterpreterState *interp)
1569 struct _gilstate_runtime_state *gilstate = &interp->runtime->gilstate;
1803 if (data->interp < 0) {
1804 _PyErr_SetString(tstate, PyExc_SystemError, "missing interp");
1826 PyInterpreterState *interp = tstate->interp;
1846 data->interp = interp->id;
1867 PyInterpreterState *interp,
1875 if (interp != _PyRuntimeGILState_GetThreadState(gilstate)->interp) {
1877 PyThreadState *tstate = PyInterpreterState_ThreadHead(interp);
1899 PyInterpreterState *interp = _PyInterpreterState_LookUpID(data->interp);
1900 if (interp == NULL) {
1910 _call_in_interpreter(gilstate, interp, _release_xidata, data);
2124 _PyInterpreterState_GetEvalFrameFunc(PyInterpreterState *interp)
2126 if (interp->eval_frame == NULL) {
2129 return interp->eval_frame;
2134 _PyInterpreterState_SetEvalFrameFunc(PyInterpreterState *interp,
2138 interp->eval_frame = NULL;
2141 interp->eval_frame = eval_frame;
2147 _PyInterpreterState_GetConfig(PyInterpreterState *interp)
2149 return &interp->config;
2156 PyInterpreterState *interp = PyInterpreterState_Get();
2158 PyStatus status = _PyConfig_Copy(config, &interp->config);
2172 return _PyInterpreterState_GetConfig(tstate->interp);