about summary refs log tree commit diff stats
path: root/miasm/jitter/jitcore.py
diff options
context:
space:
mode:
Diffstat (limited to 'miasm/jitter/jitcore.py')
-rw-r--r--miasm/jitter/jitcore.py16
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):