<div dir="ltr">Hi all:
<div><br></div><div>I have a question on local allocation in jimple body generation, hope someone could kindly shed some light on this.</div><div><br></div><div>For the following source code:</div><div><br></div><div>class TestActivity{</div><div><div>   Intent intent;</div><div>    public void test7()</div><div>    {</div><div>        intent = new Intent();</div><div>        intent.setClass(this, TestActivity.class);</div><div>        startActivity(intent);</div><div>    }</div></div><div>}</div><div><br></div><div>The following jimple is generated:</div><div><br></div><div><div>    public void test7()</div><div>    {</div><div>        TestActivity r0;</div><div>        android.content.Intent $r1, $r2, $r3;</div><div><br></div><div>        r0 := @this: TestActivity;</div><div><br></div><div>        $r1 = new android.content.Intent;</div><div><br></div><div>        specialinvoke $r1.&lt;android.content.Intent: void &lt;init&gt;()&gt;();</div><div><br></div><div>        r0.&lt;TestActivity: android.content.Intent intent&gt; = $r1;</div><div><br></div><div>        $r2 = r0.&lt;TestActivity: android.content.Intent intent&gt;; //line 7</div><div><br></div><div>        virtualinvoke $r2.&lt;android.content.Intent: void setClass(android.content.Context,java.lang.Class)&gt;(r0, class &quot;TestActivity&quot;); //line 8</div><div><br></div><div>        $r3 = r0.&lt;TestActivity: android.content.Intent intent&gt;; //line9</div><div><br></div><div>        virtualinvoke r0.&lt;TestActivity: void startActivity(android.content.Intent)&gt;($r3); //line 10</div><div><br></div><div>        return;</div><div>    }</div></div><div><br></div><div>Why can&#39;t line9 and line7 use the same local $r2, but use two locals $r3 and $r2? Aren&#39;t them identical?</div><div><br></div><div>If only on local is used, line9 can be omitted and line10 will be         virtualinvoke r0.&lt;TestActivity: void startActivity(android.content.Intent)&gt;($r2); </div><div><br></div><div>Thanks for any help on this question!</div></div>