OSDN Git Service

Rewrite GVN's field id and field type handling.
authorVladimir Marko <vmarko@google.com>
Fri, 31 Oct 2014 16:37:32 +0000 (16:37 +0000)
committerVladimir Marko <vmarko@google.com>
Fri, 21 Nov 2014 18:47:37 +0000 (18:47 +0000)
commitaf6925b7fe5dc5a3c8d52ee3370e86e75400f873
tree1fe667865bb7dbae3a00bb002492bd4ff4ab194a
parentf585e549682a98eec12f92033e9634dc162b7df8
Rewrite GVN's field id and field type handling.

Create a helper unit for dex insn classification and cache
dex field type (as encoded in the insn) in the MirFieldInfo.
Use this for cleanup and a few additional DCHECKs.

Change the GVN's field id to match the field lowering info
index (MIR::meta::{i,s}field_lowering_info), except where
multiple indexes refer to the same field and we use the
lowest of the applicable indexes. Use the MirMethodInfo from
MIRGraph to retrieve field type for GVN using this index.
This slightly reduces GVN compilation time and prepares for
further compilation time improvements.

Change-Id: I1b1247cdb8e8b6897254e2180f3230f10159bed5
15 files changed:
compiler/Android.mk
compiler/dex/global_value_numbering.cc
compiler/dex/global_value_numbering.h
compiler/dex/global_value_numbering_test.cc
compiler/dex/local_value_numbering.cc
compiler/dex/local_value_numbering_test.cc
compiler/dex/mir_analysis.cc
compiler/dex/mir_field_info.cc
compiler/dex/mir_field_info.h
compiler/dex/mir_graph.h
compiler/dex/mir_optimization.cc
compiler/dex/mir_optimization_test.cc
compiler/dex/quick/gen_common.cc
compiler/utils/dex_instruction_utils.h [new file with mode: 0644]
runtime/quick/inline_method_analyser.h