Explorar o código

Support testing for instruction dominance

jonathanvdc %!s(int64=8) %!d(string=hai) anos
pai
achega
08e6a3ab2c
Modificáronse 1 ficheiros con 10 adicións e 1 borrados
  1. 10 1
      kernel/modelverse_jit/cfg_dominators.py

+ 10 - 1
kernel/modelverse_jit/cfg_dominators.py

@@ -118,6 +118,15 @@ class DominatorTree(object):
             self.dominator_sets[block] = results
             return results
 
-    def dominates(self, dominator, dominated):
+    def dominates_block(self, dominator, dominated):
         """Tests if the first block dominates the second."""
         return dominator in self.get_dominators(dominated)
+
+    def dominates_instruction(self, dominator, dominated):
+        """Tests if the first instruction dominates the second."""
+        dominator_block = dominator.block
+        dominated_block = dominated.block
+        if dominator_block == dominated_block:
+            return dominator.definition_index < dominated.definition_index
+        else:
+            return self.dominates_block(dominator_block, dominated_block)