<div dir="ltr">Dear Eric, sorry, i forgot to write this.<div><br></div><div><div>Test java app before transformation:</div><div><div>public static void main(String[] args) {</div><div><br></div><div> int i = 0;</div><div> StringBuilder str = new StringBuilder();</div><div> synchronized(str){</div><div> str.append("fff");</div><div> }</div><div> i++;</div><div> System.out.println(i);</div><div> }</div></div></div><div><br><div>Expected result after transformation:</div><div><br></div><div><div>public static void main(String[] args) {</div><div><br></div><div>//I want to create Local variable, e.g. myInt</div><div> int i = 0;</div><div> StringBuilder str = new StringBuilder();</div><div>//I want to insert here</div><div>//myInt = 500;</div><div> synchronized(str){</div><div>//myInt = myInt + 500;</div><div>//System.out.println(myInt);</div><div> str.append("fff");</div><div> }</div><div> i++;</div><div> System.out.println(i);</div><div> }</div></div></div><div><br></div><div>Actually Result:</div><div>java.lang.NullPointerException at line in my transformation:<br></div><div>units.insertAfter(Jimple.v().newInvokeStmt(Jimple.v().newVirtualInvokeExpr(tmpRef, toCall.makeRef(), intLocal)), as3);<br></div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">2015-02-01 16:08 GMT+03:00 Bodden, Eric <span dir="ltr"><<a href="mailto:eric.bodden@sit.fraunhofer.de" target="_blank">eric.bodden@sit.fraunhofer.de</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Dear Roman,<br>
<br>
it's hard to say why it does not work when we don't know what the code is intended to do and what it actually does do.<br>
<br>
Cheers,<br>
Eric<br>
<div><div class="h5"><br>
> On 01.02.2015, at 07:28, Roman Petriev <<a href="mailto:vvpiroman@gmail.com">vvpiroman@gmail.com</a>> wrote:<br>
><br>
> Hello everybody!<br>
><br>
> I try to do test transformation, but I have some problems ...<br>
> Code:<br>
><br>
> Chain units = b.getUnits();<br>
><br>
> Iterator stmtIt = units.snapshotIterator();<br>
> while(stmtIt.hasNext())<br>
> {<br>
> Stmt stmt = (Stmt)stmtIt.next();<br>
> if(stmt instanceof EnterMonitorStmt)<br>
> {<br>
> Local intLocal = Jimple.v().newLocal("myInt", IntType.v());<br>
> b.getLocals().add(intLocal);<br>
> AssignStmt as1 = Jimple.v().newAssignStmt(intLocal, IntConstant.v(500));<br>
> units.insertBefore(as1, stmt);<br>
> AssignStmt as2 = Jimple.v().newAssignStmt(intLocal, Jimple.v().newAddExpr(intLocal, IntConstant.v(500)));<br>
> units.insertAfter(as2, stmt);<br>
> Local tmpRef = Jimple.v().newLocal("tmpRef", RefType.v("java.io.PrintStream"));<br>
> AssignStmt as3 = Jimple.v().newAssignStmt(tmpRef,<br>
> Jimple.v().newStaticFieldRef(Scene.v().getField("<java.lang.System: java.io.PrintStream out>").makeRef()));<br>
> units.insertAfter(as3, stmt);<br>
> SootMethod toCall = Scene.v().getMethod("<java.io.PrintStream: void println(int)>");<br>
><br>
> units.insertAfter(Jimple.v().newInvokeStmt(Jimple.v().newVirtualInvokeExpr(tmpRef, toCall.makeRef(), intLocal)), as3);<br>
> }<br>
> }<br>
><br>
> What's wrong? Could someone explain, why this code isn't work?<br>
> Thanks for any help.<br>
><br>
> Best regards,<br>
> Roman.<br>
</div></div>> _______________________________________________<br>
> Soot-list mailing list<br>
> <a href="mailto:Soot-list@CS.McGill.CA">Soot-list@CS.McGill.CA</a><br>
> <a href="https://mailman.CS.McGill.CA/mailman/listinfo/soot-list" target="_blank">https://mailman.CS.McGill.CA/mailman/listinfo/soot-list</a><br>
<br>
--<br>
Prof. Eric Bodden, Ph.D., <a href="http://sse.ec-spride.de/" target="_blank">http://sse.ec-spride.de/</a> <a href="http://bodden.de/" target="_blank">http://bodden.de/</a><br>
Head of Secure Software Engineering at Fraunhofer SIT, TU Darmstadt and EC SPRIDE<br>
Tel: +49 6151 16-75422 Fax: +49 6151 869-127<br>
Room B5.11, Fraunhofer SIT, Rheinstraße 75, 64295 Darmstadt<br>
<br>
</blockquote></div><br></div>