[Soot-list] jb.use-original-names option, local variables

Raghav Karol raghav.karol at gmail.com
Wed Jul 5 19:05:19 EDT 2006


Hello *,

I have a question regarding the jb.use-original-names option. I've
implemented a flow-insensitive points-to analysis using soot with the Jimple
IR and the precision is affected by the jb.use-original-names option!

The reason became clear when I looked at a dump of the the SootMethods in
question (see method dumps) With jb.use-original-names:false, a distinct
local variable is used to temporary hold each new object. For
jb.use-original-names:true a local variable is shared.

Is it possible to use distinct local variables for each new object created
while still enjoying the benefit of original names?

Thanks in advance,
Raghav

Method Dumps
===========

jb.use-original-names:false
<aaaTestFiles.PointsToAnalysisTest: void testTwo()>
{
r0
z0
$r1  // Local used Temporaray Storing new Object
$r2  //                       "
 $r3  //                       "
$r4  //                       "

  r0 := @this: aaaTestFiles.PointsToAnalysisTest
z0 = 1
  if z0 == 0 goto $r3 = new java.lang.Object
$r1 = new java.lang.Object
  specialinvoke $r1.<java.lang.Object: void <init>()>()
  r0.<aaaTestFiles.PointsToAnalysisTest : java.lang.Object lock1> = $r1
$r2 = new java.lang.Object
  specialinvoke $r2.<java.lang.Object: void <init>()>()
  r0.<aaaTestFiles.PointsToAnalysisTest : java.lang.Object lock2> = $r2
  goto [?= return]
$r3 = new java.lang.Object
  specialinvoke $r3.<java.lang.Object: void <init>()>()
  r0.<aaaTestFiles.PointsToAnalysisTest : java.lang.Object lock1> = $r3
$r4 = new java.lang.Object
  specialinvoke $r4.<java.lang.Object: void <init>()>()
  r0.<aaaTestFiles.PointsToAnalysisTest : java.lang.Object lock2> = $r4
return

}

jb.use-original-names:true
<aaaTestFiles.PointsToAnalysisTest: void testTwo()>
{
this
param1
$r0  // Local shared for storing temporary object

  this := @this: aaaTestFiles.PointsToAnalysisTest
param1 = 1
  if param1 == 0 goto $r0 = new java.lang.Object
$r0 = new java.lang.Object
  specialinvoke $r0.<java.lang.Object: void <init>()>()
  this.<aaaTestFiles.PointsToAnalysisTest: java.lang.Object lock1> = $r0
$r0 = new java.lang.Object
  specialinvoke $r0.<java.lang.Object: void <init>()>()
  this.<aaaTestFiles.PointsToAnalysisTest: java.lang.Object lock2> = $r0
  goto [?= return]
$r0 = new java.lang.Object
  specialinvoke $r0.<java.lang.Object: void <init>()>()
  this.<aaaTestFiles.PointsToAnalysisTest: java.lang.Object lock1> = $r0
$r0 = new java.lang.Object
  specialinvoke $r0.<java.lang.Object: void <init>()>()
  this.<aaaTestFiles.PointsToAnalysisTest: java.lang.Object lock2> = $r0
return

}
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.CS.McGill.CA/pipermail/soot-list/attachments/20060705/43ef830c/attachment.htm


More information about the Soot-list mailing list