OSDN Git Service

Delay dex-to-dex compilation until Optimizing is done.
authorVladimir Marko <vmarko@google.com>
Wed, 1 Jun 2016 17:38:43 +0000 (18:38 +0100)
committerVladimir Marko <vmarko@google.com>
Fri, 3 Jun 2016 12:42:46 +0000 (13:42 +0100)
commitb089eccf503646e6ed2d5bb20d973d9131166655
treed3e9d667bc7d746a0800e95d4ce78918718a9636
parent2dc77ecf375882f51ff7c09712c05b80e58abb6b
Delay dex-to-dex compilation until Optimizing is done.

This fixes a race between inlining in the Optimizing
backend and dex-to-dex quickening where the Optimizing can
read the non-quickened opcode and then the quickened field
index or vtable index and look up the wrong field or method.
Even if we such tearing of the dex instruction does not
happen, the possible reordering of dex-to-dex and Optimizing
compilation makes the final oat file non-deterministic.

Also, remove VerificationResults::RemoveVerifiedMethod() as
we have only the Optimizing backend now and as such it was
dead code and would have interfered with this change.

Bug: 29043547
Bug: 29089975

(cherry picked from commit 492a7fa6df3b197a24099a50f5abf624164f3842)

Change-Id: I1337b772dc69318393845a790e5f6d38aa3de60f
compiler/dex/verification_results.cc
compiler/dex/verification_results.h
compiler/driver/compiler_driver.cc
compiler/driver/compiler_driver.h
runtime/base/bit_vector.h