summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--compiler/optimizing/graph_checker.cc26
-rw-r--r--compiler/optimizing/graph_checker.h4
-rw-r--r--compiler/optimizing/graph_visualizer.cc2
-rw-r--r--compiler/optimizing/reference_type_propagation.cc9
-rw-r--r--test/519-bound-load-class/expected.txt0
-rw-r--r--test/519-bound-load-class/info.txt3
-rw-r--r--test/519-bound-load-class/src/Main.java24
7 files changed, 1 insertions, 67 deletions
diff --git a/compiler/optimizing/graph_checker.cc b/compiler/optimizing/graph_checker.cc
index 9679d0ab70..d7e6bd8161 100644
--- a/compiler/optimizing/graph_checker.cc
+++ b/compiler/optimizing/graph_checker.cc
@@ -257,7 +257,6 @@ void GraphChecker::VisitInvokeStaticOrDirect(HInvokeStaticOrDirect* invoke) {
}
void GraphChecker::VisitReturn(HReturn* ret) {
- VisitInstruction(ret);
if (!ret->GetBlock()->GetSingleSuccessor()->IsExitBlock()) {
AddError(StringPrintf("%s:%d does not jump to the exit block.",
ret->DebugName(),
@@ -266,7 +265,6 @@ void GraphChecker::VisitReturn(HReturn* ret) {
}
void GraphChecker::VisitReturnVoid(HReturnVoid* ret) {
- VisitInstruction(ret);
if (!ret->GetBlock()->GetSingleSuccessor()->IsExitBlock()) {
AddError(StringPrintf("%s:%d does not jump to the exit block.",
ret->DebugName(),
@@ -274,30 +272,6 @@ void GraphChecker::VisitReturnVoid(HReturnVoid* ret) {
}
}
-void GraphChecker::VisitCheckCast(HCheckCast* check) {
- VisitInstruction(check);
- HInstruction* input = check->InputAt(1);
- if (!input->IsLoadClass()) {
- AddError(StringPrintf("%s:%d expects a HLoadClass as second input, not %s:%d.",
- check->DebugName(),
- check->GetId(),
- input->DebugName(),
- input->GetId()));
- }
-}
-
-void GraphChecker::VisitInstanceOf(HInstanceOf* instruction) {
- VisitInstruction(instruction);
- HInstruction* input = instruction->InputAt(1);
- if (!input->IsLoadClass()) {
- AddError(StringPrintf("%s:%d expects a HLoadClass as second input, not %s:%d.",
- instruction->DebugName(),
- instruction->GetId(),
- input->DebugName(),
- input->GetId()));
- }
-}
-
void SSAChecker::VisitBasicBlock(HBasicBlock* block) {
super_type::VisitBasicBlock(block);
diff --git a/compiler/optimizing/graph_checker.h b/compiler/optimizing/graph_checker.h
index 7c72e23e2d..bafa69d422 100644
--- a/compiler/optimizing/graph_checker.h
+++ b/compiler/optimizing/graph_checker.h
@@ -48,10 +48,6 @@ class GraphChecker : public HGraphDelegateVisitor {
// Check that the HasBoundsChecks() flag is set for bounds checks.
void VisitBoundsCheck(HBoundsCheck* check) OVERRIDE;
- // Check that HCheckCast and HInstanceOf have HLoadClass as second input.
- void VisitCheckCast(HCheckCast* check) OVERRIDE;
- void VisitInstanceOf(HInstanceOf* check) OVERRIDE;
-
// Check that the Return and ReturnVoid jump to the exit block.
void VisitReturn(HReturn* ret) OVERRIDE;
void VisitReturnVoid(HReturnVoid* ret) OVERRIDE;
diff --git a/compiler/optimizing/graph_visualizer.cc b/compiler/optimizing/graph_visualizer.cc
index c41574c93c..30d61ef040 100644
--- a/compiler/optimizing/graph_visualizer.cc
+++ b/compiler/optimizing/graph_visualizer.cc
@@ -462,7 +462,7 @@ class HGraphVisualizerPrinter : public HGraphVisitor {
ReferenceTypeInfo info = instruction->AsLoadClass()->GetLoadedClassRTI();
ScopedObjectAccess soa(Thread::Current());
if (info.GetTypeHandle().GetReference() != nullptr) {
- StartAttributeStream("klass") << PrettyClass(info.GetTypeHandle().Get());
+ StartAttributeStream("klass") << info.GetTypeHandle().Get();
} else {
StartAttributeStream("klass") << "unresolved";
}
diff --git a/compiler/optimizing/reference_type_propagation.cc b/compiler/optimizing/reference_type_propagation.cc
index 3d6606b8dc..67840984b1 100644
--- a/compiler/optimizing/reference_type_propagation.cc
+++ b/compiler/optimizing/reference_type_propagation.cc
@@ -151,15 +151,6 @@ void ReferenceTypePropagation::BoundTypeForIfInstanceOf(HBasicBlock* block) {
HBoundType* bound_type = nullptr;
HInstruction* obj = instanceOf->InputAt(0);
- if (obj->GetReferenceTypeInfo().IsExact() && !obj->IsPhi()) {
- // This method is being called while doing a fixed-point calculation
- // over phis. Non-phis instruction whose type is already known do
- // not need to be bound to another type.
- // Not that this also prevents replacing `HLoadClass` with a `HBoundType`.
- // `HCheckCast` and `HInstanceOf` expect a `HLoadClass` as a second
- // input.
- return;
- }
for (HUseIterator<HInstruction*> it(obj->GetUses()); !it.Done(); it.Advance()) {
HInstruction* user = it.Current()->GetUser();
if (instanceOfTrueBlock->Dominates(user->GetBlock())) {
diff --git a/test/519-bound-load-class/expected.txt b/test/519-bound-load-class/expected.txt
deleted file mode 100644
index e69de29bb2..0000000000
--- a/test/519-bound-load-class/expected.txt
+++ /dev/null
diff --git a/test/519-bound-load-class/info.txt b/test/519-bound-load-class/info.txt
deleted file mode 100644
index 57639621e4..0000000000
--- a/test/519-bound-load-class/info.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-Regression test for the optimizing compiler that
-used to crash when a `HCheckCast` did not have a `HLoadClass`
-as second input.
diff --git a/test/519-bound-load-class/src/Main.java b/test/519-bound-load-class/src/Main.java
deleted file mode 100644
index aaf563366e..0000000000
--- a/test/519-bound-load-class/src/Main.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-public class Main {
- public static void main(String[] args) {
- Object o = Foo.class;
- if (o instanceof Foo) {
- System.out.println((Foo)o);
- }
- }
-}