Lines Matching defs:bb
214 typedef struct _BB BB;
245 * for subroutine call (from->bb->jmp_addr => to->bb->addr)
247 * Each BB has at most one CALL instruction. The list of JCC from
291 * Info for a side exit in a BB
295 UInt instr; /* instruction index for BB.instr array */
296 ClgJumpKind jmpkind; /* jump kind when leaving BB at this side exit */
301 * An instrumented basic block (BB).
304 * BB is to be retranslated but cost info is already available.
305 * The key for a BB is a (object, offset) tupel making it independent
308 * At the beginning of each instrumented BB,
310 * according BB structure, is added.
312 * As cost of a BB has to be distinguished depending on the context,
313 * multiple cost centers for one BB (struct BBCC) exist and the according
317 obj_node* obj; /* ELF object of BB */
318 PtrdiffT offset; /* offset of BB in ELF object file */
319 BB* next; /* chaining for a hash entry */
321 VgSectKind sect_kind; /* section of this BB, e.g. PLT */
325 fn_node* fn; /* debug info for this BB */
327 Bool is_entry; /* True if this BB is a function entry */
329 BBCC* bbcc_list; /* BBCCs for same BB (see next_bbcc in BBCC) */
358 * For each Context, recursion index and BB, there can be a BBCC.
370 * Cost info for a side exits from a BB
374 ULong ecounter; /* number of times the BB was left at this exit */
382 * On demand, multiple BBCCs will be created for the same BB
384 * - current function (it's possible that a BB is executed in the
395 BB* bb; /* BB for this cost center */
405 BBCC* next_bbcc; /* Chain of BBCCs for same BB */
415 ULong ecounter_sum; /* execution counter for first instruction of BB */
509 BB, last jump kind, last nonskipped BB
527 Int jmps_passed; /* number of conditional jumps passed in last BB */
528 BBCC* bbcc; /* last BB executed */
538 BB** table;
624 * - the address offset from the BB start address
625 * - file/line from debug info for that address (can change inside a BB)
684 // set by setup_bbcc at start of every BB, and needed by log_* helpers
733 /* from bb.c */
736 BB* CLG_(get_bb)(Addr addr, IRSB* bb_in, Bool *seen_before);
739 static __inline__ Addr bb_addr(BB* bb)
740 { return bb->offset + bb->obj->offset; }
741 static __inline__ Addr bb_jmpaddr(BB* bb)
742 { UInt off = (bb->instr_count > 0) ? bb->instr[bb->instr_count-1].instr_offset : 0;
743 return off + bb->offset + bb->obj->offset; }
755 fn_node* CLG_(get_fn_node)(BB* bb);
764 BBCC* CLG_(get_bbcc)(BB* bb);
766 void CLG_(setup_bbcc)(BB* bb) VG_REGPARM(1);
877 void CLG_(print_bb)(int s, BB* bb);