From a24daf5dede79e1c98d1f508c8dc22e73f3d89dd Mon Sep 17 00:00:00 2001 From: Jakob Stoklund Olesen Date: Thu, 25 Aug 2016 09:50:23 -0700 Subject: [PATCH] Add a predicate_leafs() method. This collects all of the leaf predicates that go into a compound predicate. Current leaf predicates are: - Settings for ISA predicates, and - FieldPredicates for instruction predicates. --- meta/cretonne/__init__.py | 3 +++ meta/cretonne/predicates.py | 10 ++++++++++ 2 files changed, 13 insertions(+) diff --git a/meta/cretonne/__init__.py b/meta/cretonne/__init__.py index d265009005..a286c1fb39 100644 --- a/meta/cretonne/__init__.py +++ b/meta/cretonne/__init__.py @@ -41,6 +41,9 @@ class Setting(object): """ return self.group + def predicate_leafs(self, leafs): + leafs.add(self) + class BoolSetting(Setting): """ diff --git a/meta/cretonne/predicates.py b/meta/cretonne/predicates.py index d6cb8f8b96..cd2ef242fe 100644 --- a/meta/cretonne/predicates.py +++ b/meta/cretonne/predicates.py @@ -68,6 +68,13 @@ class Predicate(object): def predicate_context(self): return self.context + def predicate_leafs(self, leafs): + """ + Collect all leaf predicates into the `leafs` set. + """ + for part in self.parts: + part.predicate_leafs(leafs) + class And(Predicate): """ @@ -164,6 +171,9 @@ class FieldPredicate(object): """ return self.field.format + def predicate_leafs(self, leafs): + leafs.add(self) + def rust_predicate(self, prec): """ Return a string of Rust code that evaluates this predicate.