summaryrefslogtreecommitdiffstats
path: root/compiler/optimizing/nodes.cc
diff options
context:
space:
mode:
authorCalin Juravle <calin@google.com>2015-02-12 15:25:22 +0000
committerCalin Juravle <calin@google.com>2015-02-19 17:07:52 +0000
commitacf735c13998ad2a175f5a17e7bfce220073279d (patch)
tree94969f2387f0e6dad8c7e5712aa8187c9de2be56 /compiler/optimizing/nodes.cc
parent39109a06015c91188232e59fa9e60e0915d24cd7 (diff)
downloadart-acf735c13998ad2a175f5a17e7bfce220073279d.tar.gz
art-acf735c13998ad2a175f5a17e7bfce220073279d.tar.bz2
art-acf735c13998ad2a175f5a17e7bfce220073279d.zip
Reference type propagation
- propagate reference types between instructions - remove checked casts when possible - add StackHandleScopeCollection to manage an arbitrary number of stack handles (see comments) Change-Id: I31200067c5e7375a5ea8e2f873c4374ebdb5ee60
Diffstat (limited to 'compiler/optimizing/nodes.cc')
-rw-r--r--compiler/optimizing/nodes.cc11
1 files changed, 11 insertions, 0 deletions
diff --git a/compiler/optimizing/nodes.cc b/compiler/optimizing/nodes.cc
index 4a574b075..7a75d260f 100644
--- a/compiler/optimizing/nodes.cc
+++ b/compiler/optimizing/nodes.cc
@@ -18,6 +18,7 @@
#include "ssa_builder.h"
#include "utils/growable_array.h"
+#include "scoped_thread_state_change.h"
namespace art {
@@ -999,4 +1000,14 @@ void HGraph::InlineInto(HGraph* outer_graph, HInvoke* invoke) {
invoke->GetBlock()->RemoveInstruction(invoke);
}
+std::ostream& operator<<(std::ostream& os, const ReferenceTypeInfo& rhs) {
+ ScopedObjectAccess soa(Thread::Current());
+ os << "["
+ << " is_top=" << rhs.IsTop()
+ << " type=" << (rhs.IsTop() ? "?" : PrettyClass(rhs.GetTypeHandle().Get()))
+ << " is_exact=" << rhs.IsExact()
+ << " ]";
+ return os;
+}
+
} // namespace art