tag:github.com,2008:https://github.com/APKLab/redex/releasesRelease notes from redex2017-10-31T08:48:48Ztag:github.com,2008:Repository/339694019/v2017.10.312017-10-31T08:48:48Zv2017.10.31: regalloc: Always rebuild CFG after inserting instructions<p>Summary:<br>
The lack of rebuilding caused a bug in the code that inserted loads for param<br>
register in their immediate dominators. Roughly, we started with this code:</p>
<p>B0:<br>
load-param v16<br>
load-param v17<br>
load-param v18<br>
load-param v19<br>
if-eqz v16 :foo<br>
B1:<br>
if-eqz v17 :bar</p>
<p>In the first iteration of the regalloc loop, we inserted a load for v18 in B1.<br>
Without rebuilding the CFG, we end up with:</p>
<p>B0:<br>
load-param v16<br>
load-param v17<br>
load-param v18<br>
load-param v19<br>
if-eqz v16 :foo<br>
move v0 v18<br>
B1:<br>
if-eqz v17 :bar</p>
<p>Now in the second iteration of the regalloc loop, we wanted to insert a load<br>
for v19 in B0. We looked to see if the last instruction was a branch opcode --<br>
that would necessitate inserting the move instruction before the branch -- but<br>
since the last opcode in B0 is now a move, we inserted our load in the wrong<br>
place.</p>
<p>I'm not sure why the ART verifier doesn't choke on this, but I'm glad arnaudvenet's<br>
IRTypeChecker did...</p>
<p>Reviewed By: kgsharma</p>
<p>Differential Revision: D6194764</p>
<p>fbshipit-source-id: f7945af4771a82afc6c65f9839b84d34dfc18f15</p>int3tag:github.com,2008:Repository/339694019/v1.1.02017-01-11T17:58:17Zv1.1.0: Produce a single-file self-extracting script for OSS<p>Summary:<br>
For the benefit of Buck, homebrew, and all the users who have no idea<br>
what redex-all is, we'll now build redex as a magic self-extracting script. The<br>
script contains a bash extraction preamble followed by a tar file containing<br>
redex-all and the python wrapper (and libraries). When <code>redex</code> is invoked it<br>
untars this payload to a temp location, executes redex with the specified<br>
parameters, and then deletes the untarred payload.</p>
<p>Differential Revision: D4401602</p>
<p>fbshipit-source-id: 94fa04d7a966be55ab86720c4d426ea566b562bb</p>bertmahertag:github.com,2008:Repository/339694019/v1.0.02016-10-11T22:53:00Zv1.0.0: Update stringly-typed method refs to account for colon<p>Summary:<br>
We added a colon to the method descriptor string used by ProguardMap<br>
and the canonical-name form of DexMethod::get_method. This is why using strings<br>
to represent complex data is bad.</p>
<p>This was causing remove-unreachable to go haywire, since it's driven by seeds<br>
information, which is in turn parsed using these assumptions.</p>
<p>Reviewed By: satnam6502</p>
<p>Differential Revision: D4000864</p>
<p>fbshipit-source-id: 561b67794f518d534cce16dab6ee9580bfb44ff6</p>bertmaher