<div dir="ltr">Hi guys,<div><br></div><div>I ran into a problem with exceptional graph not including all the information in a method's body. The method's body was printed with:</div><div><br></div><div>=== code to print the original method body ===</div><div>PatchingChain&lt;Unit&gt; unitBoxes = method.retrieveActiveBody().getUnits();</div><div>Iterator&lt;Unit&gt; iter = unitBoxes.iterator();</div><div>while (iter.hasNext()) { System.out.println("----&gt; " +&nbsp;&nbsp;iter.next()); }<span class="Apple-tab-span" style="white-space: pre;">        </span>&nbsp;</div><div><br></div><div>To obtain the following instructions:</div><div><div>----&gt; $r0 := @this: uiowa.edu.tempustests.MainActivity</div><div>----&gt; $r1 = new java.lang.Object</div><div>----&gt; specialinvoke $r1.&lt;java.lang.Object: void &lt;init&gt;()&gt;()</div><div>----&gt; staticinvoke &lt;edu.ucsd.ape.Deadline: void deadline(int,java.lang.Object,int)&gt;(10, $r1, 0)</div><div>----&gt; specialinvoke $r0.&lt;uiowa.edu.tempustests.MainActivity: void test6_foo()&gt;()</div><div>----&gt; $r2 = &lt;java.lang.System: java.io.PrintStream out&gt;</div><div>----&gt; virtualinvoke $r2.&lt;java.io.PrintStream: void println(java.lang.Object)&gt;($r1)</div><div>----&gt; return</div></div><div><br></div><div>I build the call graph and printout the graph using the following snippet:</div><div><br></div><div>=== build the exceptional graph ===</div><div><div>ExceptionalUnitGraph exceptionGraph = new ExceptionalUnitGraph(body);</div></div><div><div>Iterator&lt;Unit&gt; iter = exceptionGraph.iterator();</div><div>while(iter.hasNext()) System.out.println("graph " + iter.next());</div><div><br></div></div><div>The exceptional graph includes the following:</div><div><div>graph $r0 := @this: uiowa.edu.tempustests.MainActivity</div><div>graph $d0 = staticinvoke &lt;java.lang.Math: double random()&gt;()</div><div>graph $b0 = $d0 cmpl 5.0</div><div>graph if $b0 &lt;= 0 goto return</div><div>graph $r1 = staticinvoke &lt;edu.ucsd.ape.clienthelper.ServiceConnectionHelper: edu.ucsd.ape.clienthelper.ServiceConnectionHelper getIntance()&gt;()</div><div>graph $r2 = newarray (boolean)[1]</div><div>graph virtualinvoke $r1.&lt;edu.ucsd.ape.clienthelper.ServiceConnectionHelper: void waituntil_statement(int,int,boolean[])&gt;(0, 100, $r2)</div><div>graph return</div><div>graph return</div></div><div><br></div><div>Note the missing call to the PrintStream. Is this a bug?</div><div><br></div><div>Additionally, the exceptional unit graph inlined the method for me. Is there a way to control the inlining. I'm trying to put together a simple inter procedural &nbsp;analysis and what to propagate manually the results across method CFGs.</div><div><br></div><div>Thanks,</div><div>-- Octav</div><div><br></div></div>