Lines Matching defs:usable_arenas

1045      * doubly-linked `usable_arenas` list, which is maintained in
1215 usable_arenas
1229 Changed in Python 3.8: keeping usable_arenas sorted by number of free pools
1237 nfp2lasta[nfp] returns the last ("rightmost") arena in usable_arenas
1239 nfp free pools in usable_arenas.
1255 static struct arena_object* usable_arenas = NULL;
1257 /* nfp2lasta[nfp] is the last arena in usable_arenas with nfp free pools */
1576 * `usable_arenas` to the return value.
1621 assert(usable_arenas == NULL);
1817 if (UNLIKELY(usable_arenas == NULL)) {
1824 usable_arenas = new_arena();
1825 if (usable_arenas == NULL) {
1828 usable_arenas->nextarena = usable_arenas->prevarena = NULL;
1829 assert(nfp2lasta[usable_arenas->nfreepools] == NULL);
1830 nfp2lasta[usable_arenas->nfreepools] = usable_arenas;
1832 assert(usable_arenas->address != 0);
1836 * usable_arenas list. However, if the arena becomes wholly allocated,
1837 * we need to remove its arena_object from usable_arenas.
1839 assert(usable_arenas->nfreepools > 0);
1840 if (nfp2lasta[usable_arenas->nfreepools] == usable_arenas) {
1842 nfp2lasta[usable_arenas->nfreepools] = NULL;
1845 if (usable_arenas->nfreepools > 1) {
1846 assert(nfp2lasta[usable_arenas->nfreepools - 1] == NULL);
1847 nfp2lasta[usable_arenas->nfreepools - 1] = usable_arenas;
1851 poolp pool = usable_arenas->freepools;
1854 usable_arenas->freepools = pool->nextpool;
1855 usable_arenas->nfreepools--;
1856 if (UNLIKELY(usable_arenas->nfreepools == 0)) {
1858 assert(usable_arenas->freepools == NULL);
1859 assert(usable_arenas->nextarena == NULL ||
1860 usable_arenas->nextarena->prevarena ==
1861 usable_arenas);
1862 usable_arenas = usable_arenas->nextarena;
1863 if (usable_arenas != NULL) {
1864 usable_arenas->prevarena = NULL;
1865 assert(usable_arenas->address != 0);
1874 assert(usable_arenas->freepools != NULL ||
1875 usable_arenas->pool_address <=
1876 (block*)usable_arenas->address +
1882 assert(usable_arenas->nfreepools > 0);
1883 assert(usable_arenas->freepools == NULL);
1884 pool = (poolp)usable_arenas->pool_address;
1885 assert((block*)pool <= (block*)usable_arenas->address +
1887 pool->arenaindex = (uint)(usable_arenas - arenas);
1888 assert(&arenas[pool->arenaindex] == usable_arenas);
1890 usable_arenas->pool_address += POOL_SIZE;
1891 --usable_arenas->nfreepools;
1893 if (usable_arenas->nfreepools == 0) {
1894 assert(usable_arenas->nextarena == NULL ||
1895 usable_arenas->nextarena->prevarena ==
1896 usable_arenas);
1898 usable_arenas = usable_arenas->nextarena;
1899 if (usable_arenas != NULL) {
1900 usable_arenas->prevarena = NULL;
1901 assert(usable_arenas->address != 0);
2064 * are no arenas in usable_arenas with that value.
2089 * add the arena back to the `usable_arenas` list.
2092 * restore that usable_arenas is sorted in order of
2097 /* Case 1. First unlink ao from usable_arenas.
2105 * usable_arenas pointer.
2108 usable_arenas = ao->nextarena;
2109 assert(usable_arenas == NULL ||
2110 usable_arenas->address != 0);
2145 * usable_arenas. Note that because
2147 * currently on the usable_arenas list.
2149 ao->nextarena = usable_arenas;
2151 if (usable_arenas)
2152 usable_arenas->prevarena = ao;
2153 usable_arenas = ao;
2154 assert(usable_arenas->address != 0);
2186 * First unlink ao from usable_arenas.
2195 assert(usable_arenas == ao);
2196 usable_arenas = ao->nextarena;
2210 assert((usable_arenas == ao && ao->prevarena == NULL)