summaryrefslogtreecommitdiffstats
path: root/compiler/optimizing/code_generator_arm.cc
diff options
context:
space:
mode:
authorCalin Juravle <calin@google.com>2015-02-16 13:13:29 +0000
committerCalin Juravle <calin@google.com>2015-02-20 14:26:08 +0000
commitb1498f67b444c897fa8f1530777ef118e05aa631 (patch)
tree7ff4709329b0ba752a6111103a76fcea896a3adb /compiler/optimizing/code_generator_arm.cc
parentacf735c13998ad2a175f5a17e7bfce220073279d (diff)
downloadart-b1498f67b444c897fa8f1530777ef118e05aa631.tar.gz
art-b1498f67b444c897fa8f1530777ef118e05aa631.tar.bz2
art-b1498f67b444c897fa8f1530777ef118e05aa631.zip
Improve type propagation with if-contexts
This works by adding a new instruction (HBoundType) after each `if (a instanceof ClassA) {}` to bound the type that `a` can take in the True- dominated blocks. Change-Id: Iae6a150b353486d4509b0d9b092164675732b90c
Diffstat (limited to 'compiler/optimizing/code_generator_arm.cc')
-rw-r--r--compiler/optimizing/code_generator_arm.cc12
1 files changed, 12 insertions, 0 deletions
diff --git a/compiler/optimizing/code_generator_arm.cc b/compiler/optimizing/code_generator_arm.cc
index 7b0231b3c0..e864ae1cec 100644
--- a/compiler/optimizing/code_generator_arm.cc
+++ b/compiler/optimizing/code_generator_arm.cc
@@ -3865,5 +3865,17 @@ void CodeGeneratorARM::GenerateStaticOrDirectCall(HInvokeStaticOrDirect* invoke,
DCHECK(!IsLeafMethod());
}
+void LocationsBuilderARM::VisitBoundType(HBoundType* instruction) {
+ // Nothing to do, this should be removed during prepare for register allocator.
+ UNUSED(instruction);
+ LOG(FATAL) << "Unreachable";
+}
+
+void InstructionCodeGeneratorARM::VisitBoundType(HBoundType* instruction) {
+ // Nothing to do, this should be removed during prepare for register allocator.
+ UNUSED(instruction);
+ LOG(FATAL) << "Unreachable";
+}
+
} // namespace arm
} // namespace art