spacer
spacer search


Software Model Checking Framework

Search
spacer
header
Main Menu
Home
Team
Downloads
Papers
Documentation
API
Examples
Repository
Bug Reports
Licenses
Forums
Bogor Users Map
Site Map
Contact Us
Search
Login Form





Lost Password?
 
Home arrow Examples arrow Java (Automatically) Translated Examples arrow Deadlock (Bandera)

Deadlock (Bandera)
system .|Deadlock|.
{
    record (|java.lang.ArithmeticException|) extends (|java.lang.RuntimeException|) {}
    function {|java.lang.ArithmeticException.()|}((|java.lang.ArithmeticException|) [|r0|])
    {

        loc loc1: live {}
            do
            {
            }
            return;
    }
    function {|java.lang.ArithmeticException.(java.lang.String)|}((|java.lang.ArithmeticException|) [|r0|], (|java.lang.String|) [|r1|])
    {

        loc loc2: live {}
            do
            {
            }
            return;
    }
    record (|java.lang.RuntimeException|) extends (|java.lang.Exception|) {}
    function {|java.lang.RuntimeException.()|}((|java.lang.RuntimeException|) [|r0|])
    {

        loc loc1: live {}
            invoke {|java.lang.Exception.()|}([|r0|]) goto loc2;
        loc loc2: live {}
            do
            {
            }
            return;
    }
    function {|java.lang.RuntimeException.(java.lang.String)|}((|java.lang.RuntimeException|) [|r0|], (|java.lang.String|) [|r1|])
    {

        loc loc2: live {}
            do
            {
            }
            return;
    }
    record (|java.lang.String|) extends (|java.lang.Object|) {}
    record (|java.lang.Exception|) extends (|java.lang.Throwable|) {}
    function {|java.lang.Exception.()|}((|java.lang.Exception|) [|r0|])
    {

        loc loc1: live {}
            invoke {|java.lang.Throwable.()|}([|r0|]) goto loc2;
        loc loc2: live {}
            do
            {
            }
            return;
    }
    function {|java.lang.Exception.(java.lang.String)|}((|java.lang.Exception|) [|r0|], (|java.lang.String|) [|r1|])
    {

        loc loc2: live {}
            do
            {
            }
            return;
    }
    record (|java.lang.Throwable|) extends (|java.lang.Object|) {}
    function {|java.lang.Throwable.()|}((|java.lang.Throwable|) [|r0|])
    {

        loc loc1: live {}
            do
            {
            }
            return;
    }
    function {|java.lang.Throwable.(java.lang.String)|}((|java.lang.Throwable|) [|r0|], (|java.lang.String|) [|r1|])
    {

        loc loc2: live {}
            do
            {
            }
            return;
    }
    top throwable record (|java.lang.Object|) { lock objectLock; }
    function {|java.lang.Object.()|}((|java.lang.Object|) [|r0|])
    {

        loc loc1: live {}
            do
            {
            }
            return;
    }
    record (|java.lang.IllegalArgumentException|) extends (|java.lang.RuntimeException|) {}
    function {|java.lang.IllegalArgumentException.()|}((|java.lang.IllegalArgumentException|) [|r0|])
    {

        loc loc1: live {}
            do
            {
            }
            return;
    }
    function {|java.lang.IllegalArgumentException.(java.lang.String)|}((|java.lang.IllegalArgumentException|) [|r0|], (|java.lang.String|) [|r1|])
    {

        loc loc2: live {}
            invoke {|java.lang.RuntimeException.()|}([|r0|]) goto loc3;
        loc loc3: live {}
            do
            {
            }
            return;
    }
    record (|java.lang.NumberFormatException|) extends (|java.lang.IllegalArgumentException|) {}
    function {|java.lang.NumberFormatException.()|}((|java.lang.NumberFormatException|) [|r0|])
    {

        loc loc1: live {}
            do
            {
            }
            return;
    }
    function {|java.lang.NumberFormatException.(java.lang.String)|}((|java.lang.NumberFormatException|) [|r0|], (|java.lang.String|) [|r1|])
    {

        loc loc2: live {}
            do
            {
            }
            return;
    }
    record (|java.lang.Thread|) extends (|java.lang.Object|) { boolean /|java.lang.Thread.started|\;tid threadID;boolean isThreadInitialized; }
    function {|java.lang.Thread.()|}((|java.lang.Thread|) [|r0|])
    {

        loc loc1: live {}
            invoke {|java.lang.Object.()|}([|r0|]) goto loc2;
        loc loc2: live {}
            do
            {
                [|r0|]./|java.lang.Thread.started|\ := false;
            }
            goto loc3;
        loc loc3: live {}
            do
            {
            }
            return;
    }
    function {|java.lang.Thread.start()|}((|java.lang.Thread|) [|r0|])
    {
        boolean [|$z0|];
        (|java.lang.IllegalThreadStateException|) [|$r1|];
        (|java.lang.Throwable|) throwLocal;

        loc sync: live { [|r0|], [|$z0|] }
            when [|r0|] == null || lockAvailable([|r0|].objectLock) do
            {
                lock([|r0|].objectLock);
            }
            goto loc1;
        loc loc1: live { [|r0|], [|$z0|] }
            do
            {
                [|$z0|] := [|r0|]./|java.lang.Thread.started|\;
            }
            goto loc2;
        loc loc2: live { [|r0|] }
            when !(([|$z0|])) do
            {
            }
            goto loc6;
            when !((!(([|$z0|])))) do
            {
            }
            goto loc3;
        loc loc3: live { [|r0|], [|$r1|] }
            when !((BogorJava.isInitialized(isi, "(|java.lang.IllegalThreadStateException|)"))) invisible invoke runStaticInitializers(BogorJava.getStaticInitializers(isi, "(|java.lang.IllegalThreadStateException|)")) goto loc3;
            when BogorJava.isInitialized(isi, "(|java.lang.IllegalThreadStateException|)") do invisible
            {
                [|$r1|] := new (|java.lang.IllegalThreadStateException|);
            }
            goto loc4;
        loc loc4: live { [|r0|], [|$r1|], [|$r1|] }
            when !((BogorJava.isInitialized(isi, "(|java.lang.String|)"))) invisible invoke runStaticInitializers(BogorJava.getStaticInitializers(isi, "(|java.lang.String|)")) goto loc4;
            when BogorJava.isInitialized(isi, "(|java.lang.String|)") invoke {|java.lang.IllegalThreadStateException.(java.lang.String)|}([|$r1|], BogorJava.toString("This thread has already been started.")) goto loc5;
        loc loc5: live { [|r0|] }
            do
            {
                throw [|$r1|];
            }
            goto loc5;
        loc loc6: live { [|r0|] }
            do
            {
                [|r0|]./|java.lang.Thread.started|\ := true;
            }
            goto loc7;
        loc loc7: live { [|r0|] }
            do
            {
                [|r0|].threadID := start (|java.lang.Thread|) ([|r0|]);
            }
            goto loc8;
        loc loc8: live { [|r0|] }
            do
            {
            }
            goto unsync;
        loc unsync: live {}
            do
            {
                unlock([|r0|].objectLock);
            }
            return;
        loc unsyncEx: live { throwLocal }
            do
            {
                unlock([|r0|].objectLock);
            }
            goto throwEx;
        loc throwEx: live {}
            do
            {
                throw throwLocal;
            }
            goto throwEx;
        catch (|java.lang.Throwable|) throwLocal except at sync, unsync, unsyncEx, throwEx goto unsyncEx;
    }
    function {|java.lang.Thread.run()|}((|java.lang.Thread|) [|r0|])
    {

        loc loc1: live {}
            do
            {
            }
            return;
    }
    record (|java.lang.IllegalThreadStateException|) extends (|java.lang.IllegalArgumentException|) {}
    function {|java.lang.IllegalThreadStateException.()|}((|java.lang.IllegalThreadStateException|) [|r0|])
    {

        loc loc1: live {}
            do
            {
            }
            return;
    }
    function {|java.lang.IllegalThreadStateException.(java.lang.String)|}((|java.lang.IllegalThreadStateException|) [|r0|], (|java.lang.String|) [|r1|])
    {

        loc loc2: live {}
            invoke {|java.lang.IllegalArgumentException.(java.lang.String)|}([|r0|], null) goto loc3;
        loc loc3: live {}
            do
            {
            }
            return;
    }
    (|Lock|) /|Deadlock.lock1|\;
    (|Lock|) /|Deadlock.lock2|\;
    int /|Deadlock.state|\;
    record (|Deadlock|) extends (|java.lang.Object|) {}
    virtual +|java.lang.Thread.start()|+ { (|java.lang.Thread|) -> {|java.lang.Thread.start()|} (|Process1|) -> {|java.lang.Thread.start()|} (|Process2|) -> {|java.lang.Thread.start()|} }
    function {|Deadlock.main(java.lang.String[])|}((|java.lang.String|)[] [|r0|])
    {
        (|Lock|) [|$r1|];
        (|Process1|) [|r2|];
        (|Process2|) [|r3|];
        (|Lock|) [|$r4|];
        (|Process1|) [|$r5|];
        (|Process2|) [|$r6|];

        loc loc1: live { [|$r1|] }
            when !(BogorJava.isInitialized(isi, "(|Lock|)")) invisible invoke runStaticInitializers(BogorJava.getStaticInitializers(isi, "(|Lock|)")) goto loc1;
            when BogorJava.isInitialized(isi, "(|Lock|)") do
            {
                [|$r1|] := BogorJava.nwR<(|Lock|)>();
            }
            goto loc2;
        loc loc2: live { [|$r1|] }
            invoke {|Lock.()|}([|$r1|]) goto loc3;
        loc loc3: live {}
            do
            {
                /|Deadlock.lock1|\ := [|$r1|];
            }
            goto loc4;
        loc loc4: live { [|$r4|] }
            when !(BogorJava.isInitialized(isi, "(|Lock|)")) invisible invoke runStaticInitializers(BogorJava.getStaticInitializers(isi, "(|Lock|)")) goto loc4;
            when BogorJava.isInitialized(isi, "(|Lock|)") do
            {
                [|$r4|] := BogorJava.nwR<(|Lock|)>();
            }
            goto loc5;
        loc loc5: live { [|$r4|] }
            invoke {|Lock.()|}([|$r4|]) goto loc6;
        loc loc6: live {}
            do
            {
                /|Deadlock.lock2|\ := [|$r4|];
            }
            goto loc7;
        loc loc7: live { [|$r5|] }
            when !(BogorJava.isInitialized(isi, "(|Process1|)")) invisible invoke runStaticInitializers(BogorJava.getStaticInitializers(isi, "(|Process1|)")) goto loc7;
            when BogorJava.isInitialized(isi, "(|Process1|)") do
            {
                [|$r5|] := BogorJava.nwR<(|Process1|)>();
            }
            goto loc8;
        loc loc8: live { [|$r5|] }
            invoke {|Process1.()|}([|$r5|]) goto loc9;
        loc loc9: live { [|r2|] }
            do
            {
                [|r2|] := [|$r5|];
            }
            goto loc10;
        loc loc10: live { [|r2|], [|$r6|], [|r2|] }
            when !(BogorJava.isInitialized(isi, "(|Process2|)")) invisible invoke runStaticInitializers(BogorJava.getStaticInitializers(isi, "(|Process2|)")) goto loc10;
            when BogorJava.isInitialized(isi, "(|Process2|)") do
            {
                [|$r6|] := BogorJava.nwR<(|Process2|)>();
            }
            goto loc11;
        loc loc11: live { [|r2|], [|$r6|] }
            invoke {|Process2.()|}([|$r6|]) goto loc12;
        loc loc12: live { [|r3|], [|r2|] }
            do
            {
                [|r3|] := [|$r6|];
            }
            goto loc13;
        loc loc13: live { [|r3|] }
            invoke virtual +|java.lang.Thread.start()|+([|r2|]) goto loc14;
        loc loc14: live {}
            invoke virtual +|java.lang.Thread.start()|+([|r3|]) goto loc15;
        loc loc15: live {}
            do
            {
            }
            return;
    }
    record (|Lock|) extends (|java.lang.Object|) {}
    function {|Lock.()|}((|Lock|) [|r0|])
    {

        loc loc1: live {}
            invoke {|java.lang.Object.()|}([|r0|]) goto loc2;
        loc loc2: live {}
            do
            {
            }
            return;
    }
    record (|Process1|) extends (|java.lang.Thread|) {}
    function {|Process1.()|}((|Process1|) [|r0|])
    {

        loc loc1: live {}
            invoke {|java.lang.Thread.()|}([|r0|]) goto loc2;
        loc loc2: live {}
            do
            {
            }
            return;
    }
    function {|Process1.run()|}((|Process1|) [|r0|])
    {
        int [|$i0|];
        (|Lock|) [|r1|];
        (|Lock|) [|r2|];
        (|java.lang.Throwable|) [|r3|];
        (|java.lang.Throwable|) [|r4|];
        int [|$i1|];
        (|Lock|) [|$r5|];
        (|Lock|) [|$r6|];
        int [|$i2|];
        int [|$i3|];
        (|java.lang.Throwable|) [|$r7|];
        (|java.lang.Throwable|) [|$r8|];

        loc loc1: live { [|$i0|] }
            when !(BogorJava.isInitialized(isi, "(|Deadlock|)")) invisible invoke runStaticInitializers(BogorJava.getStaticInitializers(isi, "(|Deadlock|)")) goto loc1;
            when BogorJava.isInitialized(isi, "(|Deadlock|)") do
            {
                [|$i0|] := /|Deadlock.state|\;
            }
            goto loc2;
        loc loc2: live { [|$i1|] }
            do
            {
                [|$i1|] := [|$i0|] + 1;
            }
            goto loc3;
        loc loc3: live { [|$i1|] }
            when !(BogorJava.isInitialized(isi, "(|Deadlock|)")) invisible invoke runStaticInitializers(BogorJava.getStaticInitializers(isi, "(|Deadlock|)")) goto loc3;
            when BogorJava.isInitialized(isi, "(|Deadlock|)") do
            {
                /|Deadlock.state|\ := [|$i1|];
            }
            goto loc4;
        loc loc4: live { [|$r5|] }
            when !(BogorJava.isInitialized(isi, "(|Deadlock|)")) invisible invoke runStaticInitializers(BogorJava.getStaticInitializers(isi, "(|Deadlock|)")) goto loc4;
            when BogorJava.isInitialized(isi, "(|Deadlock|)") do
            {
                [|$r5|] := /|Deadlock.lock1|\;
            }
            goto loc5;
        loc loc5: live { [|$r5|], [|r1|] }
            do
            {
                [|r1|] := [|$r5|];
            }
            goto loc6;
        loc loc6: live { [|r1|] }
            when [|$r5|] == null || lockAvailable([|$r5|].objectLock) do
            {
                lock([|$r5|].objectLock);
            }
            goto loc7;
        loc loc7: live { [|r1|], [|$r6|], [|r1|] }
            when !(BogorJava.isInitialized(isi, "(|Deadlock|)")) invisible invoke runStaticInitializers(BogorJava.getStaticInitializers(isi, "(|Deadlock|)")) goto loc7;
            when BogorJava.isInitialized(isi, "(|Deadlock|)") do
            {
                [|$r6|] := /|Deadlock.lock2|\;
            }
            goto loc8;
        loc loc8: live { [|r2|], [|r1|], [|$r6|] }
            do
            {
                [|r2|] := [|$r6|];
            }
            goto loc9;
        loc loc9: live { [|r2|], [|r1|] }
            when [|$r6|] == null || lockAvailable([|$r6|].objectLock) do
            {
                lock([|$r6|].objectLock);
            }
            goto loc10;
        loc loc10: live { [|r2|], [|r1|], [|$i2|], [|r2|], [|r1|] }
            when !(BogorJava.isInitialized(isi, "(|Deadlock|)")) invisible invoke runStaticInitializers(BogorJava.getStaticInitializers(isi, "(|Deadlock|)")) goto loc10;
            when BogorJava.isInitialized(isi, "(|Deadlock|)") do
            {
                [|$i2|] := /|Deadlock.state|\;
            }
            goto loc11;
        loc loc11: live { [|r2|], [|$i3|], [|r1|] }
            do
            {
                [|$i3|] := [|$i2|] + 1;
            }
            goto loc12;
        loc loc12: live { [|r2|], [|r1|], [|r2|], [|$i3|], [|r1|] }
            when !(BogorJava.isInitialized(isi, "(|Deadlock|)")) invisible invoke runStaticInitializers(BogorJava.getStaticInitializers(isi, "(|Deadlock|)")) goto loc12;
            when BogorJava.isInitialized(isi, "(|Deadlock|)") do
            {
                /|Deadlock.state|\ := [|$i3|];
            }
            goto loc13;
        loc loc13: live { [|r2|], [|r1|] }
            when [|r2|] == null || hasLock([|r2|].objectLock) do
            {
                unlock([|r2|].objectLock);
            }
            goto loc14;
        loc loc14: live { [|r1|] }
            do
            {
            }
            goto loc19;
        loc loc16: live { [|r2|], [|r1|], [|r3|] }
            do
            {
                [|r3|] := [|$r7|];
            }
            goto loc17;
        loc loc17: live { [|r2|], [|r1|], [|r3|] }
            when [|r2|] == null || hasLock([|r2|].objectLock) do
            {
                unlock([|r2|].objectLock);
            }
            goto loc18;
        loc loc18: live { [|r1|] }
            do
            {
                throw [|r3|];
            }
            goto loc18;
        loc loc19: live { [|r1|] }
            when [|r1|] == null || hasLock([|r1|].objectLock) do
            {
                unlock([|r1|].objectLock);
            }
            goto loc20;
        loc loc20: live {}
            do
            {
            }
            goto loc25;
        loc loc22: live { [|r1|], [|r4|] }
            do
            {
                [|r4|] := [|$r8|];
            }
            goto loc23;
        loc loc23: live { [|r1|], [|r4|] }
            when [|r1|] == null || hasLock([|r1|].objectLock) do
            {
                unlock([|r1|].objectLock);
            }
            goto loc24;
        loc loc24: live {}
            do
            {
                throw [|r4|];
            }
            goto loc24;
        loc loc25: live {}
            do
            {
            }
            return;
        catch (|java.lang.Throwable|) [|$r7|] at loc10, loc11, loc12, loc13 goto loc16;
        catch (|java.lang.Throwable|) [|$r7|] at loc16, loc17 goto loc16;
        catch (|java.lang.Throwable|) [|$r8|] at loc7, loc8, loc9, loc10, loc11, loc12, loc13, loc14, loc16, loc17, loc18, loc19 goto loc22;
        catch (|java.lang.Throwable|) [|$r8|] at loc22, loc23 goto loc22;
    }
    record (|Process2|) extends (|java.lang.Thread|) {}
    function {|Process2.()|}((|Process2|) [|r0|])
    {

        loc loc1: live {}
            invoke {|java.lang.Thread.()|}([|r0|]) goto loc2;
        loc loc2: live {}
            do
            {
            }
            return;
    }
    function {|Process2.run()|}((|Process2|) [|r0|])
    {
        int [|$i0|];
        (|Lock|) [|r1|];
        (|Lock|) [|r2|];
        (|java.lang.Throwable|) [|r3|];
        (|java.lang.Throwable|) [|r4|];
        int [|$i1|];
        (|Lock|) [|$r5|];
        (|Lock|) [|$r6|];
        int [|$i2|];
        int [|$i3|];
        (|java.lang.Throwable|) [|$r7|];
        (|java.lang.Throwable|) [|$r8|];

        loc loc1: live { [|$i0|] }
            when !(BogorJava.isInitialized(isi, "(|Deadlock|)")) invisible invoke runStaticInitializers(BogorJava.getStaticInitializers(isi, "(|Deadlock|)")) goto loc1;
            when BogorJava.isInitialized(isi, "(|Deadlock|)") do
            {
                [|$i0|] := /|Deadlock.state|\;
            }
            goto loc2;
        loc loc2: live { [|$i1|] }
            do
            {
                [|$i1|] := [|$i0|] + 1;
            }
            goto loc3;
        loc loc3: live { [|$i1|] }
            when !(BogorJava.isInitialized(isi, "(|Deadlock|)")) invisible invoke runStaticInitializers(BogorJava.getStaticInitializers(isi, "(|Deadlock|)")) goto loc3;
            when BogorJava.isInitialized(isi, "(|Deadlock|)") do
            {
                /|Deadlock.state|\ := [|$i1|];
            }
            goto loc4;
        loc loc4: live { [|$r5|] }
            when !(BogorJava.isInitialized(isi, "(|Deadlock|)")) invisible invoke runStaticInitializers(BogorJava.getStaticInitializers(isi, "(|Deadlock|)")) goto loc4;
            when BogorJava.isInitialized(isi, "(|Deadlock|)") do
            {
                [|$r5|] := /|Deadlock.lock2|\;
            }
            goto loc5;
        loc loc5: live { [|$r5|], [|r1|] }
            do
            {
                [|r1|] := [|$r5|];
            }
            goto loc6;
        loc loc6: live { [|r1|] }
            when [|$r5|] == null || lockAvailable([|$r5|].objectLock) do
            {
                lock([|$r5|].objectLock);
            }
            goto loc7;
        loc loc7: live { [|r1|], [|$r6|], [|r1|] }
            when !(BogorJava.isInitialized(isi, "(|Deadlock|)")) invisible invoke runStaticInitializers(BogorJava.getStaticInitializers(isi, "(|Deadlock|)")) goto loc7;
            when BogorJava.isInitialized(isi, "(|Deadlock|)") do
            {
                [|$r6|] := /|Deadlock.lock1|\;
            }
            goto loc8;
        loc loc8: live { [|r2|], [|r1|], [|$r6|] }
            do
            {
                [|r2|] := [|$r6|];
            }
            goto loc9;
        loc loc9: live { [|r2|], [|r1|] }
            when [|$r6|] == null || lockAvailable([|$r6|].objectLock) do
            {
                lock([|$r6|].objectLock);
            }
            goto loc10;
        loc loc10: live { [|r2|], [|r1|], [|$i2|], [|r2|], [|r1|] }
            when !(BogorJava.isInitialized(isi, "(|Deadlock|)")) invisible invoke runStaticInitializers(BogorJava.getStaticInitializers(isi, "(|Deadlock|)")) goto loc10;
            when BogorJava.isInitialized(isi, "(|Deadlock|)") do
            {
                [|$i2|] := /|Deadlock.state|\;
            }
            goto loc11;
        loc loc11: live { [|r2|], [|$i3|], [|r1|] }
            do
            {
                [|$i3|] := [|$i2|] + 1;
            }
            goto loc12;
        loc loc12: live { [|r2|], [|r1|], [|r2|], [|$i3|], [|r1|] }
            when !(BogorJava.isInitialized(isi, "(|Deadlock|)")) invisible invoke runStaticInitializers(BogorJava.getStaticInitializers(isi, "(|Deadlock|)")) goto loc12;
            when BogorJava.isInitialized(isi, "(|Deadlock|)") do
            {
                /|Deadlock.state|\ := [|$i3|];
            }
            goto loc13;
        loc loc13: live { [|r2|], [|r1|] }
            when [|r2|] == null || hasLock([|r2|].objectLock) do
            {
                unlock([|r2|].objectLock);
            }
            goto loc14;
        loc loc14: live { [|r1|] }
            do
            {
            }
            goto loc19;
        loc loc16: live { [|r2|], [|r1|], [|r3|] }
            do
            {
                [|r3|] := [|$r7|];
            }
            goto loc17;
        loc loc17: live { [|r2|], [|r1|], [|r3|] }
            when [|r2|] == null || hasLock([|r2|].objectLock) do
            {
                unlock([|r2|].objectLock);
            }
            goto loc18;
        loc loc18: live { [|r1|] }
            do
            {
                throw [|r3|];
            }
            goto loc18;
        loc loc19: live { [|r1|] }
            when [|r1|] == null || hasLock([|r1|].objectLock) do
            {
                unlock([|r1|].objectLock);
            }
            goto loc20;
        loc loc20: live {}
            do
            {
            }
            goto loc25;
        loc loc22: live { [|r1|], [|r4|] }
            do
            {
                [|r4|] := [|$r8|];
            }
            goto loc23;
        loc loc23: live { [|r1|], [|r4|] }
            when [|r1|] == null || hasLock([|r1|].objectLock) do
            {
                unlock([|r1|].objectLock);
            }
            goto loc24;
        loc loc24: live {}
            do
            {
                throw [|r4|];
            }
            goto loc24;
        loc loc25: live {}
            do
            {
            }
            return;
        catch (|java.lang.Throwable|) [|$r7|] at loc10, loc11, loc12, loc13 goto loc16;
        catch (|java.lang.Throwable|) [|$r7|] at loc16, loc17 goto loc16;
        catch (|java.lang.Throwable|) [|$r8|] at loc7, loc8, loc9, loc10, loc11, loc12, loc13, loc14, loc16, loc17, loc18, loc19 goto loc22;
        catch (|java.lang.Throwable|) [|$r8|] at loc22, loc23 goto loc22;
    }
    extension JavaLangThread for edu.ksu.cis.projects.bogor.module.bandera.javalib.JavaLangThread
    {
        expdef tid getThreadIdForRecord ((|java.lang.Thread|) t);
        expdef (|java.lang.Thread|) getThreadRecordForId (tid id);
        actiondef associateThreadIdAndRecord (tid id, (|java.lang.Thread|) r);
    }
    extension JavaLangInteger for edu.ksu.cis.projects.bogor.module.bandera.javalib.JavaLangInteger
    {
        expdef int parseInt (string, int);
    }
    extension JavaLangFloat for edu.ksu.cis.projects.bogor.module.bandera.javalib.JavaLangFloat
    {
        expdef float parseFloat (string);
        expdef int floatToIntBits (float);
        expdef int floatToRawIntBits (float);
        expdef float intBitsToFloat (int);
    }
    extension JavaLangDouble for edu.ksu.cis.projects.bogor.module.bandera.javalib.JavaLangDouble
    {
        expdef double parseDouble (string);
        expdef long doubleToLongBits (double);
        expdef long doubleToRawLongBits (double);
        expdef double longBitsToDouble (long);
    }
    extension JavaLangMath for edu.ksu.cis.projects.bogor.module.bandera.javalib.JavaLangMath
    {
        expdef double acos (double);
        expdef double asin (double);
        expdef double atan (double);
        expdef double atan2 (double, double);
        expdef double cos (double);
        expdef double exp (double);
        expdef double log (double);
        expdef double pow (double, double);
        expdef double rint (double);
        expdef double sin (double);
        expdef double sqrt (double);
        expdef double tan (double);
    }
    extension Choose for edu.ksu.cis.projects.bogor.module.ext.choice.ChooseModule
    {
        expdef boolean chooseBool ();
        expdef int chooseInt (int, int);
        expdef (|java.lang.Object|) chooseJavaObject (boolean, (|java.lang.String|));
        expdef (|java.lang.Object|) chooseJavaReachable ((|java.lang.Object|), boolean, (|java.lang.String|));
    }
    thread (|java.lang.Thread|)((|java.lang.Thread|) [|this|])
    {

        loc loc0: live {}
            invoke virtual +|java.lang.Runnable.run()|+([|this|]) return;
    }
    boolean[] isi;
    int wrap (-32768, 32767) charTypeField;
    int wrap (-32768, 32767)[] charArrayTypeField;
    int wrap (-128, 127) byteTypeField;
    int wrap (-128, 127)[] byteArrayTypeField;
    extension BogorJava for edu.ksu.cis.projects.bogor.ext.java.BogorJavaModule
    {
        expdef (|java.lang.String|) toString (string);
        expdef string fromString ((|java.lang.String|));
        expdef StaticInitializers[] getStaticInitializers (boolean[], string, string...);
        expdef boolean isInitialized (boolean[], string, string...);
        expdef boolean isInitializedByEnumValue (boolean[], StaticInitializers);
        expdef int getEnumConstantCount <'a$enum>();
        expdef int enumToZeroIndexedInt <'a$enum>('a$enum);
        expdef 'a$enum zeroIndexedIntToEnum <'a$enum>(int);
        expdef 'a$record nwR <'a$record>();
        expdef 'a$array nwA <'a$array>(int...);
        expdef int wrap (0, 255) lcmp (long, long);
        expdef int wrap (0, 255) dcmpg (double, double);
        expdef int wrap (0, 255) dcmpl (double, double);
        expdef int wrap (0, 255) fcmpg (float, float);
        expdef int wrap (0, 255) fcmpl (float, float);
        expdef float fpInfinity ();
        expdef float fnInfinity ();
        expdef float fNaN ();
        expdef double dpInfinity ();
        expdef double dnInfinity ();
        expdef double dNaN ();
    }
    enum StaticInitializers { dummyStaticInitializer }
    virtual +|staticInitializer|+ on StaticInitializers { dummyStaticInitializer -> dummyStaticInitializer }
    function dummyStaticInitializer(StaticInitializers si)
    {

        loc loc0: live {}
            do
            {
            }
            return;
    }
    function runStaticInitializers(StaticInitializers[] sil)
    {
        StaticInitializers temp;
        int offset := 0;

        loc loc0:
            when offset >= sil.length do
            {
            }
            return;
            when offset < sil.length do
            {
                temp := sil[offset];
                assert isi[BogorJava.enumToZeroIndexedInt(temp)] != true;
                isi[BogorJava.enumToZeroIndexedInt(temp)] := true;
                offset := offset + 1;
            }
            goto loc1;
        loc loc1:
            invoke virtual +|staticInitializer|+(temp) goto loc0;
    }
    active main thread MAIN()
    {

        loc loc0: live {}
            do invisible
            {
                isi := new boolean[BogorJava.getEnumConstantCount()];
            }
            goto loc1;
        loc loc1: live {}
            when !(BogorJava.isInitialized(isi, "(|Deadlock|)")) invisible invoke runStaticInitializers(BogorJava.getStaticInitializers(isi, "(|Deadlock|)")) goto loc1;
            when BogorJava.isInitialized(isi, "(|Deadlock|)") invoke {|Deadlock.main(java.lang.String[])|}((null)) return;
    }
    virtual +|java.lang.Runnable.run()|+ { (|java.lang.Thread|) -> {|java.lang.Thread.run()|} (|Process1|) -> {|Process1.run()|} (|Process2|) -> {|Process2.run()|} }

}
 
Next >
spacer
Popular
Newsflash

 
(c) SAnToS Laboratory, Kansas State University, 2002-2006
spacer