summaryrefslogtreecommitdiffstats
path: root/compiler/dex/mir_graph.h
diff options
context:
space:
mode:
authorVladimir Marko <vmarko@google.com>2015-03-18 11:33:58 +0000
committerVladimir Marko <vmarko@google.com>2015-03-18 14:50:07 +0000
commit22fe45de11ed7afdf21400d2de3abd23f3a62800 (patch)
tree47eb3fa0dba432667774eb1d0eb9f66b897a66d3 /compiler/dex/mir_graph.h
parentd6f00810e2419489f526e4f0c94cb13318a365fd (diff)
downloadandroid_art-22fe45de11ed7afdf21400d2de3abd23f3a62800.tar.gz
android_art-22fe45de11ed7afdf21400d2de3abd23f3a62800.tar.bz2
android_art-22fe45de11ed7afdf21400d2de3abd23f3a62800.zip
Quick: Eliminate check-cast guaranteed by instance-of.
Eliminate check-cast if the result of an instance-of with the very same type on the same value is used to branch to the check-cast's block or a dominator of it. Note that there already exists a verifier-based elimination of check-cast but it excludes check-cast on interfaces. This new optimization works for interface types and, since it's GVN-based, it can better recognize when the same reference is used for instance-of and check-cast. Change-Id: Ib315199805099d1cb0534bb4a90dc51baa409685
Diffstat (limited to 'compiler/dex/mir_graph.h')
-rw-r--r--compiler/dex/mir_graph.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/compiler/dex/mir_graph.h b/compiler/dex/mir_graph.h
index 9da39d151c..3298af1162 100644
--- a/compiler/dex/mir_graph.h
+++ b/compiler/dex/mir_graph.h
@@ -150,6 +150,7 @@ enum OatMethodAttributes {
#define MIR_IGNORE_NULL_CHECK (1 << kMIRIgnoreNullCheck)
#define MIR_IGNORE_RANGE_CHECK (1 << kMIRIgnoreRangeCheck)
+#define MIR_IGNORE_CHECK_CAST (1 << kMIRIgnoreCheckCast)
#define MIR_STORE_NON_NULL_VALUE (1 << kMIRStoreNonNullValue)
#define MIR_CLASS_IS_INITIALIZED (1 << kMIRClassIsInitialized)
#define MIR_CLASS_IS_IN_DEX_CACHE (1 << kMIRClassIsInDexCache)