summaryrefslogtreecommitdiff
path: root/compiler/optimizing/codegen_test.cc
diff options
context:
space:
mode:
authorbuzbee <buzbee@google.com>2015-02-20 14:07:27 -0800
committerbuzbee <buzbee@google.com>2015-02-22 07:54:17 -0800
commit4de86d0987139153ae0e2d50dbbefde2ce34ee87 (patch)
treee9ec46e3972ad197b5d889e80d15fd9a2e4b6d9d /compiler/optimizing/codegen_test.cc
parent4ba405483177cf346211d43d97892bae6ff14119 (diff)
Handle another untyped dex CONST issue
The lack of typing for dex byte code instructions causes problems for the Quick compiler's register allocation scheme. In Quick, Dalvik virtual registers can have multiple "home locations" depending on type. Because CONST operators are untyped and their result can be used in multiple type contexts, the code generator must ensure that any CONST #0 definitions of potential floating point uses are also flushed to the associated reference view for the vreg (if it exists) to support GC. Previously, this issue was believed to have been fixed by c/255389 (see internal b/7250540). However, the earlier fix failed to account for const definitions propogating to other vregs via MOVE. This CL addresses that case by applying the earlier workaround to MOVE operators. Note that there are a few other places where we attempt to deal with this general problem. First, the verifier will disable compilation for dex code sequences which have type mismatches on non-const operations. Second, during vreg analysis we detect type mismatches on Phi insertion, and disable register promotion if there is a mismatch. b.android.com/147187 Change-Id: I70f27a59e6f84a89777db91ceacaa94a42f5e952
Diffstat (limited to 'compiler/optimizing/codegen_test.cc')
0 files changed, 0 insertions, 0 deletions