about summary refs log tree commit diff stats
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--miasm2/expression/expression.py10
-rw-r--r--miasm2/expression/simplifications.py12
2 files changed, 6 insertions, 16 deletions
diff --git a/miasm2/expression/expression.py b/miasm2/expression/expression.py
index 92735734..1473838b 100644
--- a/miasm2/expression/expression.py
+++ b/miasm2/expression/expression.py
@@ -118,7 +118,6 @@ class Expr(object):
 
     all_exprs = set()
     args2expr = {}
-    simp_exprs = set()
     canon_exprs = set()
     use_singleton = True
 
@@ -147,15 +146,6 @@ class Expr(object):
         expr = object.__new__(cls, *args, **kwargs)
         return expr
 
-    def get_is_simp(self):
-        return self in Expr.simp_exprs
-
-    def set_is_simp(self, value):
-        assert(value is True)
-        Expr.simp_exprs.add(self)
-
-    is_simp = property(get_is_simp, set_is_simp)
-
     def get_is_canon(self):
         return self in Expr.canon_exprs
 
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"