void KplWarpDestroy(KplWarp *self) { int i; free(self->threads); KplInstWrapFree(self->inst); for (i = self->sync_stack_top; i >=0 ; --i) bit_map_free(self->sync_stack.entries[i].active_thread_mask); }
void X86ContextDestroy(X86Context *self) { X86Emu *emu = self->emu; /* If context is not finished/zombie, finish it first. * This removes all references to current freed context. */ if (!X86ContextGetState(self, X86ContextFinished | X86ContextZombie)) X86ContextFinish(self, 0); /* Remove context from finished contexts list. This should * be the only list the context is in right now. */ assert(!DOUBLE_LINKED_LIST_MEMBER(emu, running, self)); assert(!DOUBLE_LINKED_LIST_MEMBER(emu, suspended, self)); assert(!DOUBLE_LINKED_LIST_MEMBER(emu, zombie, self)); assert(DOUBLE_LINKED_LIST_MEMBER(emu, finished, self)); DOUBLE_LINKED_LIST_REMOVE(emu, finished, self); /* Free private structures */ x86_regs_free(self->regs); x86_regs_free(self->backup_regs); x86_signal_mask_table_free(self->signal_mask_table); spec_mem_free(self->spec_mem); bit_map_free(self->affinity); /* Unlink shared structures */ x86_loader_unlink(self->loader); x86_signal_handler_table_unlink(self->signal_handler_table); x86_file_desc_table_unlink(self->file_desc_table); mem_unlink(self->mem); /* Remove context from contexts list and free */ DOUBLE_LINKED_LIST_REMOVE(emu, context, self); X86ContextDebug("inst %lld: context %d freed\n", asEmu(emu)->instructions, self->pid); /* Static instruction */ delete_static(&self->inst); }
void si_wavefront_free(struct si_wavefront_t *wavefront) { /* Free wavefront */ bit_map_free(wavefront->pred); free(wavefront); }