Lines Matching refs:tt
210 // of this TTEntry in the containing Sector's tt array.
334 precisely when this sector's translation table (tt) reaches
338 /* An hash table, mapping guest address to an index in the tt array.
345 TTEntry* tt;
350 /* The count of tt entries with state InUse. */
356 /* Expandable arrays of tt indices for each of the ECLASS_N
358 the containing sector's tt array, which in turn should point
383 N_TC_SECTORS. The initial value indicates the TT/TC system is
481 vg_assert(s->tt);
482 TTEntry* tte = &s->tt[tteNo];
688 " tt.entry 0x%lu tt.tcptr 0x%p\n", \
691 sec->tt[tteNo].entry, sec->tt[tteNo].tcptr)
694 if (sec->tt[tteNo].status == Deleted) {
704 if ((UChar*) sec->tt[tteNo].tcptr >= hx->start + hx->len) {
750 vg_assert(sec->tt[tteNo].status == InUse);
754 vg_assert((UChar*)sec->tt[tteNo].tcptr <= (UChar*)hcode);
927 VG_(printf)("... QQQ tt.entry 0x%lu tt.tcptr 0x%p\n",
1105 /* 'vge' is being added to 'sec' at TT entry 'tteno'. Add appropriate
1116 tte = &sec->tt[tteno];
1163 /* For each tt reference in each eclass .. ensure the reference
1164 is to a valid tt entry, and that the entry's address ranges
1173 tte = &sec->tt[tteno];
1210 tte = &sec->tt[tteno];
1409 sectors[sNo].empty_tt_list = sectors[sNo].tt[i].usage.next_empty_tte;
1418 sectors[sNo].tt[tteno].usage.next_empty_tte = sectors[sNo].empty_tt_list;
1436 /* Sector has never been used before. Need to allocate tt and
1438 vg_assert(sec->tt == NULL);
1462 VG_(out_of_memory_NORETURN)("initialiseSector(TT)",
1466 sec->tt = (TTEntry*)(Addr)sr_Res(sres);
1469 sec->tt[ei].status = Empty;
1470 sec->tt[ei].n_tte2ec = 0;
1500 VG_(message)(Vg_DebugMsg, "TT/TC: initialise sector %d\n", sno);
1509 vg_assert(sec->tt != NULL);
1524 if (sec->tt[ei].status == InUse) {
1525 vg_assert(sec->tt[ei].n_tte2ec >= 1);
1526 vg_assert(sec->tt[ei].n_tte2ec <= 3);
1527 n_dump_osize += vge_osize(&sec->tt[ei].vge);
1531 sec->tt[ei].entry,
1532 sec->tt[ei].vge );
1537 vg_assert(sec->tt[ei].n_tte2ec == 0);
1539 sec->tt[ei].status = Empty;
1540 sec->tt[ei].n_tte2ec = 0;
1578 VG_(message)(Vg_DebugMsg, "TT/TC: recycle sector %d\n", sno);
1591 /* Add a translation of vge to TT/TC. The translation is temporarily
1647 used before, in which case it will get its tt/tc allocated
1658 "(TT loading %2d%%, TC loading %2d%%, avg tce size %d)\n",
1694 /* Find an empty tt slot, and use it. There must be such a slot
1695 since tt is never allowed to get completely full. */
1697 TTEntry__init(§ors[y].tt[tteix]);
1698 sectors[y].tt[tteix].status = InUse;
1699 sectors[y].tt[tteix].tcptr = tcptr;
1700 sectors[y].tt[tteix].usage.prof.count = 0;
1701 sectors[y].tt[tteix].usage.prof.weight =
1703 sectors[y].tt[tteix].vge = *vge;
1704 sectors[y].tt[tteix].entry = entry;
1706 // Point an htt entry to the tt slot
1730 §ors[y].tt[tteix].usage.prof.count );
1798 && sectors[sno].tt[tti].entry == guest_addr) {
1802 guest_addr, sectors[sno].tt[tti].tcptr );
1804 *res_hcode = (Addr)sectors[sno].tt[tti].tcptr;
1875 /* Delete a tt entry, and update all the eclass data accordingly. */
1888 tte = &sec->tt[tteno];
1911 tt. */
1969 tte = &sec->tt[tteno];
1996 if (sec->tt[i].status == InUse
1997 && overlaps( guest_start, range, &sec->tt[i].vge )) {
2122 tte = &sec->tt[i];
2144 /*--- AUXILIARY: the unredirected TT/TC ---*/
2149 main tt/tc structures. When unredir_tc or unredir_tt becomes full,
2220 /* Add an UNREDIRECTED translation of vge to TT/TC. The translation
2338 "TT/TC: VG_(init_tt_tc) "
2370 /* and the unredir tt/tc */
2376 "TT/TC: cache: %s--avg-transtab-entry-size=%d, "
2383 "TT/TC: cache: %d sectors of %d bytes each = %d total TC\n",
2387 "TT/TC: table: %d tables[%d] of %d bytes each = %d total TT\n",
2392 "TT/TC: table: %d tt entries each = %d total tt entries\n",
2395 "TT/TC: table: %d htt[%d] of %d bytes each = %d total HTT"
2422 " tt/tc: %'llu tt lookups requiring %'llu probes\n",
2425 " tt/tc: %'llu fast-cache updates, %'llu flushes\n",
2485 if (sectors[sno].tt[i].status != InUse)
2487 score_total += score(§ors[sno].tt[i]);
2488 /* Find the rank for sectors[sno].tt[i]. */
2497 if ( score(§ors[sno].tt[i]) > tops[r].score ) {
2510 tops[r].addr = sectors[sno].tt[i].entry;
2511 tops[r].score = score( §ors[sno].tt[i] );
2523 if (sectors[sno].tt[i].status != InUse)
2525 sectors[sno].tt[i].usage.prof.count = 0;