소스 검색

Support testing for instruction dominance

jonathanvdc 8 년 전
부모
커밋
08e6a3ab2c
1개의 변경된 파일10개의 추가작업 그리고 1개의 파일을 삭제
  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)