[Soot-list] Soot + Jikes

Khilan Gudka khilan at doc.ic.ac.uk
Sat Jul 3 10:04:57 EDT 2010


Hi Eric,

Thanks for the reply. I'm not so sure that it's a Jikes-only bug. In the
case of hsqldb, the method which ultimate leads to a trap is
org.hsqldb.Database.isShutdown().

The source code is:

  synchronized boolean isShutdown() {

      return dbState == DATABASE_SHUTDOWN;

  }


The non-transformed bytecode is:

  synchronized isShutdown() : boolean

   L0

    LINENUMBER 376 L0

    ALOAD 0: this

    GETFIELD Database.dbState : int

    BIPUSH 16

    IF_ICMPNE L1

    ICONST_1

    IRETURN

   L1

    ICONST_0

    IRETURN

   L2

    LOCALVARIABLE this Database L0 L2 0

    MAXSTACK = 2

    MAXLOCALS = 1


The soot-transformed code is:

  synchronized isShutdown()Z

    ALOAD 0

    GETFIELD org/hsqldb/Database.dbState : I

    BIPUSH 16

    IF_ICMPNE L0

    ICONST_1

    ISTORE 0

    GOTO L1

   L0

    ICONST_0

    ISTORE 0

   L1

    ILOAD 0

    IRETURN

    MAXSTACK = 2

    MAXLOCALS = 1

In particular, I think the problem is the ISTORE 0 instructions, which if
I'm not mistaken incorrectly sets local 0 = "this" to either 1 or 0
depending if the values are equal or not. Isn't the return variable local 1?

Thanks,
Khilan

On 3 July 2010 12:32, Eric Bodden <bodden at st.informatik.tu-darmstadt.de>wrote:

> Hi Khilan.
>
> > Anyone come across this before and know how to solve it?
>
> I guess it would help more to ask the Jikes developers. In the
> transformed program runs on other VMS then clearly this error is due
> to a bug in Jikes, not in Soot. At our lab we have some experience
> with Jikes and from what I have heard it's not uncommon for Jikes to
> fail on larger programs.
>
> Eric
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.cs.mcgill.ca/pipermail/soot-list/attachments/20100703/f9de709b/attachment.html 


More information about the Soot-list mailing list