diff options
| author | Camille Mougey <commial@gmail.com> | 2016-11-07 12:24:51 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2016-11-07 12:24:51 +0100 |
| commit | 3af8c4a5a6668cc89a4df3fb66222f4147a896b9 (patch) | |
| tree | 21a7d7ad5d6da120e8e23e0b92725073d4d4e27c /miasm2/expression/simplifications.py | |
| parent | a15e0faca425c6e2591448e510bf14f1c3f04e14 (diff) | |
| parent | f0fbc59a663774dc4f4861308bee3f91ccd9746d (diff) | |
| download | miasm-3af8c4a5a6668cc89a4df3fb66222f4147a896b9.tar.gz miasm-3af8c4a5a6668cc89a4df3fb66222f4147a896b9.zip | |
Merge pull request #445 from serpilliere/symb_exec_clean
Symb exec clean
Diffstat (limited to 'miasm2/expression/simplifications.py')
| -rw-r--r-- | miasm2/expression/simplifications.py | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/miasm2/expression/simplifications.py b/miasm2/expression/simplifications.py index cbffb219..dd4f5c04 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,10 @@ 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 +105,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" |