Lines Matching full:arena
69 // Each arena has a sorted array of superblocks, which expands
79 red zone bytes (depends on Arena.rz_szB, but >= sizeof(void*))
81 red zone bytes (depends on Arena.rz_szB, but >= sizeof(void*))
89 excess red zone bytes (if Arena.rz_szB > sizeof(void*))
91 excess red zone bytes (if Arena.rz_szB > sizeof(void*))
173 // of the same arena can be reclaimed or till a new superblock is needed
174 // in any arena.
190 // An arena. 'freelist' is a circular, doubly-linked list. 'rz_szB' is
210 // superblocks in the arena. If this array is expanded, which
246 Arena;
337 // These are determined purely by which arena the block lives in.
339 SizeT overhead_szB_lo ( Arena* a )
344 SizeT overhead_szB_hi ( Arena* a )
349 SizeT overhead_szB ( Arena* a )
356 // Return the minimum bszB for a block in this arena. Can have zero-length
359 SizeT min_useful_bszB ( Arena* a )
368 SizeT pszB_to_bszB ( Arena* a, SizeT pszB )
373 SizeT bszB_to_pszB ( Arena* a, SizeT bszB )
383 SizeT get_pszB ( Arena* a, Block* b )
392 UByte* get_block_payload ( Arena* a, Block* b )
399 Block* get_payload_block ( Arena* a, UByte* payload )
496 static void mkBhdrAccess( Arena* a, Block* b )
507 static void mkBhdrNoAccess( Arena* a, Block* b )
516 static void mkBhdrSzAccess( Arena* a, Block* b )
529 /*--- Arena management ---*/
534 // The arena structures themselves.
535 static Arena vg_arena[VG_N_ARENAS];
538 // not Arena*s. This fn converts the former to the latter.
539 static Arena* arenaId_to_ArenaP ( ArenaId arena )
541 vg_assert(arena >= 0 && arena < VG_N_ARENAS);
542 return & vg_arena[arena];
545 static ArenaId arenaP_to_ArenaId ( Arena *a )
547 ArenaId arena = a -vg_arena;
548 vg_assert(arena >= 0 && arena < VG_N_ARENAS);
549 return arena;
552 // Initialise an arena. rz_szB is the (default) minimum redzone size;
560 Arena* a = arenaId_to_ArenaP(aid);
621 /* Print vital stats for an arena. */
626 Arena* a = arenaId_to_ArenaP(i);
660 We initialise the client arena separately (and later) because the core
662 client arena's redzone size.
690 // has done its first allocation from the client arena.
696 // Check and set the client arena redzone size
706 // Initialise the client arena. On all platforms,
708 // in the client arena, which makes findSb cheaper.
723 // Similarly to client arena, big allocations will be unsplittable.
820 void deferred_reclaimSuperblock ( Arena* a, Superblock* sb);
825 Superblock* newSuperblock ( Arena* a, SizeT cszB )
832 // A new superblock is needed for arena a. We will execute the deferred
836 Arena* arena = arenaId_to_ArenaP(aid);
837 if (arena->deferred_reclaimed_sb != NULL)
838 deferred_reclaimSuperblock (arena, NULL);
888 // * removes sb from arena sblocks list.
891 void reclaimSuperblock ( Arena* a, Superblock* sb)
951 Superblock* findSb ( Arena* a, Block* b )
972 VG_(printf)("findSb: can't find pointer %p in arena '%s'\n",
974 VG_(core_panic)("findSb: VG_(arena_free)() in wrong arena?");
982 Superblock* maybe_findSb ( Arena* a, Addr ad )
1118 void swizzle ( Arena* a, UInt lno )
1158 Bool blockSane ( Arena* a, Block* b )
1183 Bool unsplittableBlockSane ( Arena* a, Superblock *sb, Block* b )
1214 void ppSuperblocks ( Arena* a )
1248 Arena* a;
1389 Arena* a;
1399 /* arena is not in use, is not initialised and will fail the
1407 "-------- Arena \"%s\": %'lu/%'lu max/curr mmap'd, "
1506 Arena *arena;
1511 arena = arenaId_to_ArenaP(i);
1512 sb = maybe_findSb( arena, a );
1519 aai->name = arena->name;
1527 aai->block_szB = get_pszB(arena, b);
1528 aai->rwoffset = a - (Addr)get_block_payload(arena, b);
1548 void mkFreeBlock ( Arena* a, Block* b, SizeT bszB, UInt b_lno )
1577 void mkInuseBlock ( Arena* a, Block* b, SizeT bszB )
1598 void shrinkInuseBlock ( Arena* a, Block* b, SizeT bszB )
1620 void unlinkBlock ( Arena* a, Block* b, UInt listno )
1653 void add_one_block_to_stats (Arena* a, SizeT loaned)
1671 /* Allocate a piece of memory of req_pszB bytes on the given arena.
1680 Arena* a;
1767 "sblock array for arena `%s' resized to %lu\n",
1872 // If arena has already a deferred reclaimed superblock and
1875 // sb becomes then the new arena deferred superblock.
1879 void deferred_reclaimSuperblock ( Arena* a, Superblock* sb)
1949 static void mergeWithFreeNeighbours (Arena* a, Superblock* sb,
2028 Arena* a;
2153 Arena* a;
2191 we have to (temporarily) disable unsplittable for this arena,
2270 Arena* a = arenaId_to_ArenaP(aid);
2281 // int arena; /* total space in arena */
2306 Arena* a = arenaId_to_ArenaP(VG_AR_CLIENT);
2324 mi->arena = a->stats__bytes_mmaped;
2340 This then ensures that the arena redzone size is properly
2370 Arena* a;
2414 Arena* a;
2537 Arena* a;