diff options
Diffstat (limited to '')
| -rw-r--r-- | miasm2/expression/expression.py | 10 | ||||
| -rw-r--r-- | miasm2/expression/simplifications.py | 12 |
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" |