diff options
author | 2015-02-24 11:32:46 +0000 | |
---|---|---|
committer | 2015-04-22 20:40:00 +0100 | |
commit | e490b01c12d33f3bd5c247b55b47e507cc9c8fab (patch) | |
tree | 9b04b5390f0f29986d9951bdce4a2cb083113809 /compiler/dex/mir_graph.cc | |
parent | fac10700fd99516e8a14f751fe35553021ce6982 (diff) |
Quick: Rewrite type inference pass.
Use method signatures, field types and types embedded in dex
insns for type inference. Perform the type inference in two
phases, first a simple pass that records all types implied
by individual insns, and then an iterative pass to propagate
those types further via phi, move, if-cc and aget/aput insns.
Bug: 19419671
Change-Id: Id38579d48a44fc5eadd13780afb6d370093056f9
Diffstat (limited to 'compiler/dex/mir_graph.cc')
-rw-r--r-- | compiler/dex/mir_graph.cc | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/compiler/dex/mir_graph.cc b/compiler/dex/mir_graph.cc index 4d340387f2..7d0729f11d 100644 --- a/compiler/dex/mir_graph.cc +++ b/compiler/dex/mir_graph.cc @@ -695,9 +695,10 @@ void MIRGraph::InlineMethod(const DexFile::CodeItem* code_item, uint32_t access_ current_method_ = m_units_.size(); current_offset_ = 0; // TODO: will need to snapshot stack image and use that as the mir context identification. - m_units_.push_back(new DexCompilationUnit(cu_, class_loader, Runtime::Current()->GetClassLinker(), - dex_file, current_code_item_, class_def_idx, method_idx, access_flags, - cu_->compiler_driver->GetVerifiedMethod(&dex_file, method_idx))); + m_units_.push_back(new (arena_) DexCompilationUnit( + cu_, class_loader, Runtime::Current()->GetClassLinker(), dex_file, + current_code_item_, class_def_idx, method_idx, access_flags, + cu_->compiler_driver->GetVerifiedMethod(&dex_file, method_idx))); const uint16_t* code_ptr = current_code_item_->insns_; const uint16_t* code_end = current_code_item_->insns_ + current_code_item_->insns_size_in_code_units_; |