about summary refs log tree commit diff stats
path: root/miasm2/jitter/jitcore.py
diff options
context:
space:
mode:
authorserpilliere <serpilliere@users.noreply.github.com>2015-02-23 21:29:09 +0100
committerserpilliere <serpilliere@users.noreply.github.com>2015-02-23 21:29:09 +0100
commitdd0ecf0380c42d8eecdaa5f91dbac401994a4173 (patch)
tree515821cff8cdac2143f5c4759be6f68611789f70 /miasm2/jitter/jitcore.py
parentcc21187b2844413822ab0179af8d6464e12cf8d5 (diff)
parent59a7c6f3d153abedd12c4a1ab9700230ad8b8002 (diff)
downloadmiasm-dd0ecf0380c42d8eecdaa5f91dbac401994a4173.tar.gz
miasm-dd0ecf0380c42d8eecdaa5f91dbac401994a4173.zip
Merge pull request #85 from commial/bounded-dict
Bounded dict
Diffstat (limited to '')
-rw-r--r--miasm2/jitter/jitcore.py11
1 files changed, 8 insertions, 3 deletions
diff --git a/miasm2/jitter/jitcore.py b/miasm2/jitter/jitcore.py
index f1e34870..16f201c9 100644
--- a/miasm2/jitter/jitcore.py
+++ b/miasm2/jitter/jitcore.py
@@ -17,6 +17,7 @@
 #
 from miasm2.core import asmbloc
 from miasm2.core.interval import interval
+from miasm2.core.utils import BoundedDict
 from miasm2.jitter.csts import *
 
 
@@ -24,6 +25,9 @@ class JitCore(object):
 
     "JiT management. This is an abstract class"
 
+    jitted_block_delete_cb = None
+    jitted_block_max_size = 10000
+
     def __init__(self, ir_arch, bs=None):
         """Initialise a JitCore instance.
         @ir_arch: ir instance for current architecture
@@ -33,7 +37,8 @@ class JitCore(object):
         self.ir_arch = ir_arch
         self.bs = bs
         self.known_blocs = {}
-        self.lbl2jitbloc = {}
+        self.lbl2jitbloc = BoundedDict(self.jitted_block_max_size,
+                                       delete_cb=self.jitted_block_delete_cb)
         self.lbl2bloc = {}
         self.log_mn = False
         self.log_regs = False
@@ -67,7 +72,7 @@ class JitCore(object):
     def load(self, arch, attrib):
         "Initialise the Jitter according to arch and attrib"
 
-        raise Exception("DO NOT instanciate JitCore")
+        raise NotImplementedError("Abstract class")
 
     def get_bloc_min_max(self, cur_bloc):
         "Update cur_bloc to set min/max address"
@@ -91,7 +96,7 @@ class JitCore(object):
         @irblocs: a gorup of irblocs
         """
 
-        raise Exception("DO NOT instanciate JitCore")
+        raise NotImplementedError("Abstract class")
 
     def add_bloc(self, b):
         """Add a bloc to JiT and JiT it.