about summary refs log tree commit diff stats
path: root/miasm2/expression/simplifications.py
diff options
context:
space:
mode:
authorFabrice Desclaux <fabrice.desclaux@cea.fr>2016-10-17 12:48:20 +0200
committerFabrice Desclaux <fabrice.desclaux@cea.fr>2016-11-04 16:45:46 +0100
commitabbc51905c2c392b259f43c681ed9617168add5e (patch)
treecec3c008ded0d84084e4ab37505a53bb4cb30554 /miasm2/expression/simplifications.py
parent89795337461e2a2eeae42324e023582b93067996 (diff)
downloadmiasm-abbc51905c2c392b259f43c681ed9617168add5e.tar.gz
miasm-abbc51905c2c392b259f43c681ed9617168add5e.zip
IR: is_simp in the simplifier class
Diffstat (limited to 'miasm2/expression/simplifications.py')
-rw-r--r--miasm2/expression/simplifications.py12
1 files changed, 6 insertions, 6 deletions
diff --git a/miasm2/expression/simplifications.py b/miasm2/expression/simplifications.py
index cbffb219..069be197 100644
--- a/miasm2/expression/simplifications.py
+++ b/miasm2/expression/simplifications.py
@@ -48,6 +48,7 @@ class ExpressionSimplifier(object):
 
     def __init__(self):
         self.expr_simp_cb = {}
+        self.simplified_exprs = set()
 
     def enable_passes(self, passes):
         """Add passes from @passes
@@ -80,7 +81,7 @@ class ExpressionSimplifier(object):
         @expression: Expr instance
         Return an Expr instance"""
 
-        if expression.is_simp:
+        if expression in self.simplified_exprs:
             return expression
 
         # Find a stable state
@@ -92,10 +93,9 @@ class ExpressionSimplifier(object):
 
             # Launch recursivity
             expression = self.expr_simp_wrapper(e_new)
-            expression.is_simp = True
-
+            self.simplified_exprs.add(expression)
         # Mark expression as simplified
-        e_new.is_simp = True
+        self.simplified_exprs.add(e_new)
         return e_new
 
     def expr_simp_wrapper(self, expression, callback=None):
@@ -104,13 +104,13 @@ class ExpressionSimplifier(object):
         @manual_callback: If set, call this function instead of normal one
         Return an Expr instance"""
 
-        if expression.is_simp:
+        if expression in self.simplified_exprs:
             return expression
 
         if callback is None:
             callback = self.expr_simp
 
-        return expression.visit(callback, lambda e: not(e.is_simp))
+        return expression.visit(callback, lambda e: e not in self.simplified_exprs)
 
     def __call__(self, expression, callback=None):
         "Wrapper on expr_simp_wrapper"