core/x86/instr.c
/* This makes it safe to keep an instr around indefinitely when an instrs raw
 * bits point into the cache. It allocates memory local to the instr to hold
 * a copy of the raw bits. If this was not done the original raw bits could 
 * be deleted at some point.  This is necessary if you want to keep an instr
 * around for a long time (for clients, beyond returning from the call that 
 * gave you the instr)
 */
This makes it safe to keep an instr around indefinitely when an instrs raw
bits point into the cache. It allocates memory local to the instr to hold
a copy of the raw bits. If this was not done the original raw bits could
be deleted at some point.  This is necessary if you want to keep an instr
around for a long time (for clients, beyond returning from the call that
gave you the instr)
This makes it safe to keep an instr around indefinitely when an instrs raw bits point into the cache . It allocates memory local to the instr to hold a copy of the raw bits . If this was not done the original raw bits could be deleted at some point . This is necessary if you want to keep an instr around for a long time ( for clients beyond returning from the call that gave you the instr )
void
instr_make_persistent(dcontext_t *dcontext, instr_t *instr)
{
    if ((instr->flags & INSTR_RAW_BITS_VALID) != 0 &&
        (instr->flags & INSTR_RAW_BITS_ALLOCATED) == 0) {
        instr_allocate_raw_bits(dcontext, instr, instr->length);
    }
}
void instr_make_persistent ( dcontext_t * dcontext , instr_t * instr ) { if ( ( instr -> flags & INSTR_RAW_BITS_VALID ) != 0 && ( instr -> flags & INSTR_RAW_BITS_ALLOCATED ) == 0 ) { instr_allocate_raw_bits ( dcontext , instr , instr -> length ) ; } }
This makes it safe to keep an instr around indefinitely when an instrs raw
 bits point into the cache.
This makes it safe to keep an instr around indefinitely when an instrs raw bits point into the cache .