diff options
Diffstat (limited to 'miasm/jitter/jitcore.py')
| -rw-r--r-- | miasm/jitter/jitcore.py | 16 |
1 files changed, 5 insertions, 11 deletions
diff --git a/miasm/jitter/jitcore.py b/miasm/jitter/jitcore.py index ebda656f..cc531cf5 100644 --- a/miasm/jitter/jitcore.py +++ b/miasm/jitter/jitcore.py @@ -104,7 +104,7 @@ class JitCore(object): cur_block.ad_max = cur_block.lines[-1].offset + cur_block.lines[-1].l else: # 1 byte block for unknown mnemonic - offset = ir_arch.loc_db.get_location_offset(cur_block.loc_key) + offset = self.ir_arch.loc_db.get_location_offset(cur_block.loc_key) cur_block.ad_min = offset cur_block.ad_max = offset+1 @@ -198,10 +198,7 @@ class JitCore(object): """ mem_range = interval() - - for block in blocks: - mem_range += interval([(block.ad_min, block.ad_max - 1)]) - + mem_range = interval([(block.ad_min, block.ad_max - 1) for block in blocks]) return mem_range def __updt_jitcode_mem_range(self, vm): @@ -235,12 +232,6 @@ class JitCore(object): # Modified blocks modified_blocks.add(block) - # Generate interval to delete - del_interval = self.blocks_to_memrange(modified_blocks) - - # Remove interval from monitored interval list - self.blocks_mem_interval -= del_interval - # Remove modified blocks for block in modified_blocks: try: @@ -259,6 +250,9 @@ class JitCore(object): # Remove label -> block link del(self.loc_key_to_block[block.loc_key]) + # Re generate blocks intervals + self.blocks_mem_interval = self.blocks_to_memrange(self.loc_key_to_block.values()) + return modified_blocks def updt_automod_code_range(self, vm, mem_range): |