From 40bcb9356f951af2db4b9b671511841eedf59427 Mon Sep 17 00:00:00 2001 From: Mingyao Yang Date: Wed, 3 Feb 2016 05:46:57 -0800 Subject: Some clean-up for the handling of HSelect in LSE Use $noinline and throwing an Exception for doing no-inlining in the test. Also create reference info early for HSelect if it has reference type, which may help the pre-existence-based alias analysis. Change-Id: Ia825058a457b049f87a13087bb78f5233513e0a8 --- compiler/optimizing/load_store_elimination.cc | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'compiler/optimizing') diff --git a/compiler/optimizing/load_store_elimination.cc b/compiler/optimizing/load_store_elimination.cc index 9a97f54d54..8eaac0bbd3 100644 --- a/compiler/optimizing/load_store_elimination.cc +++ b/compiler/optimizing/load_store_elimination.cc @@ -61,7 +61,7 @@ class ReferenceInfo : public ArenaObject { (use->IsStaticFieldSet() && (reference_ == use->InputAt(1))) || (use->IsUnresolvedStaticFieldSet() && (reference_ == use->InputAt(0))) || (use->IsArraySet() && (reference_ == use->InputAt(2)))) { - // reference_ is merged to a phi/HSelect, passed to a callee, or stored to heap. + // reference_ is merged to HPhi/HSelect, passed to a callee, or stored to heap. // reference_ isn't the only name that can refer to its value anymore. is_singleton_ = false; is_singleton_and_not_returned_ = false; @@ -458,6 +458,10 @@ class HeapLocationCollector : public HGraphVisitor { CreateReferenceInfoForReferenceType(instruction); } + void VisitSelect(HSelect* instruction) OVERRIDE { + CreateReferenceInfoForReferenceType(instruction); + } + void VisitDeoptimize(HDeoptimize* instruction ATTRIBUTE_UNUSED) OVERRIDE { may_deoptimize_ = true; } -- cgit v1.2.3-59-g8ed1b