summaryrefslogtreecommitdiff
path: root/compiler/optimizing/graph_visualizer.cc
diff options
context:
space:
mode:
authorDavid Brazdil <dbrazdil@google.com>2015-11-19 10:29:39 +0000
committerDavid Brazdil <dbrazdil@google.com>2015-11-23 13:49:46 +0000
commit809d70f5b268227dbd59432dc038c74d8351be29 (patch)
tree6482a9ce5a34c04fc14d5b5db77d5daec1ec5aad /compiler/optimizing/graph_visualizer.cc
parentdde8b8694954c0268eb12a7ccbddf07d9de262fd (diff)
ART: Fix wide stores in Optimizing
SsaBuilder::VisitStoreLocal did not take into account the following: (a) when storing a wide value, the high vreg must be invalidated, (b) when storing into the high vreg of a wide value, the low vreg must be invalidated. Both situations cause overestimation of liveness but only (b) has implications on correctness. CodeGenerator::EmitEnvironment will skip the high vreg, causing deoptimizing and try/catch to load a wrong value for that vreg. In order to fix this bug, several changes had to be made to the SsaBuilder: (1) phis need to be initialized with a type which matches its inputs' size, (2) eagerly created loop header phis may end up being undefined because of their corresponding vregs being invalidated inside the loop; these are marked dead during input setting, (3) the entire SSA-building algorithm should never revive an undefined loop header phi. Bug: 25677992 Bug: https://code.google.com/p/android/issues/detail?id=194022 Change-Id: Id8a852e38c3f5ff1c2e608b1aafd6d5ac8311e32
Diffstat (limited to 'compiler/optimizing/graph_visualizer.cc')
0 files changed, 0 insertions, 0 deletions