}
+#if LINK_BRANCHES
static void add_to_hashlist_unresolved(struct block_link *bl, int tcache_id)
{
u32 tcmask = HASH_TABLE_SIZE(tcache_id) - 1;
bl->next->prev = bl->prev;
}
-#if LINK_BRANCHES
static void dr_block_link(struct block_entry *be, struct block_link *bl, int emit_jump)
{
dbg(2, "- %slink from %p to pc %08x entry %p", emit_jump ? "":"early ",
return;
}
-#if LINK_BRANCHES
// remove from hash table, make incoming links unresolved
if (bd->active) {
for (i = 0; i < bd->entry_count; i++) {
rm_from_hashlist(&bd->entryp[i], tcache_id);
+#if LINK_BRANCHES
while ((bl = bd->entryp[i].links) != NULL) {
dr_block_unlink(bl, 1);
add_to_hashlist_unresolved(bl, tcache_id);
}
+#endif
}
dr_mark_memory(-1, bd, tcache_id, nolit);
add_to_block_list(&inactive_blocks[tcache_id], bd);
}
bd->active = 0;
-#endif
if (free) {
#if LINK_BRANCHES
rm_from_block_lists(bd);
bd->addr = bd->size = bd->addr_lit = bd->size_lit = 0;
bd->entry_count = 0;
- bd->entryp = NULL;
}
emith_update_cache();
}