diff options
author | Vladimir Marko <vmarko@google.com> | 2015-03-18 11:33:58 +0000 |
---|---|---|
committer | Vladimir Marko <vmarko@google.com> | 2015-03-18 14:50:07 +0000 |
commit | 22fe45de11ed7afdf21400d2de3abd23f3a62800 (patch) | |
tree | 47eb3fa0dba432667774eb1d0eb9f66b897a66d3 /compiler/dex/compiler_enums.h | |
parent | d6f00810e2419489f526e4f0c94cb13318a365fd (diff) | |
download | android_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/compiler_enums.h')
-rw-r--r-- | compiler/dex/compiler_enums.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/compiler/dex/compiler_enums.h b/compiler/dex/compiler_enums.h index 7edb490176..39725dee38 100644 --- a/compiler/dex/compiler_enums.h +++ b/compiler/dex/compiler_enums.h @@ -345,6 +345,7 @@ enum ExtendedMIROpcode { enum MIROptimizationFlagPositions { kMIRIgnoreNullCheck = 0, kMIRIgnoreRangeCheck, + kMIRIgnoreCheckCast, kMIRStoreNonNullValue, // Storing non-null value, always mark GC card. kMIRClassIsInitialized, kMIRClassIsInDexCache, |