(STATE (:TT ((THREAD (:ID 0) (:CS ((FRAME (:PC 9) (:LOCS ((REF 6))) (:STK ((REF 6))) (:MLOC ("Top" "main" 0))))) (:STAT ACTIVE) (:REF NIL)) (THREAD (:ID 1) (:CS ((FRAME (:PC 0) (:LOCS ((REF 0))) (:STK NIL) (:MLOC ("Point" "run" 1))))) (:STAT ACTIVE) (:REF (REF 0))) (THREAD (:ID 2) (:CS ((FRAME (:PC 1) (:LOCS ((REF 3))) (:STK ((REF 3))) (:MLOC ("Point" "run" 1))))) (:STAT ACTIVE) (:REF (REF 3))) (THREAD (:ID 3) (:CS ((FRAME (:PC 0) (:LOCS ((REF 6))) (:STK NIL) (:MLOC ("Point" "run" 1))))) (:STAT INACTIVE) (:REF (REF 6))))) (:HP (((REF 0) (("Point" (("x" 4) ("y" 4) ("dx" 1) ("dy" 1) ("track" (REF 5)))) ("Thread" NIL) ("Object" (("monitor" 0) ("mcount" 0) ("wait-set" 0))))) ((REF 1) (("Track" (("x" 0) ("y" 0) ("prev" 0))) ("Object" (("monitor" 0) ("mcount" 0) ("wait-set" 0))))) ((REF 2) (("Track" (("x" 1) ("y" 1) ("prev" (REF 1)))) ("Object" (("monitor" 0) ("mcount" 0) ("wait-set" 0))))) ((REF 3) (("FastPoint" NIL) ("Point" (("x" 0) ("y" 0) ("dx" 1) ("dy" 1) ("track" 0))) ("Thread" NIL) ("Object" (("monitor" 0) ("mcount" 0) ("wait-set" 0))))) ((REF 4) (("Track" (("x" 2) ("y" 2) ("prev" (REF 2)))) ("Object" (("monitor" 0) ("mcount" 0) ("wait-set" 0))))) ((REF 5) (("Track" (("x" 3) ("y" 3) ("prev" (REF 4)))) ("Object" (("monitor" 0) ("mcount" 0) ("wait-set" 0))))) ((REF 6) (("FastPoint" NIL) ("Point" (("x" 0) ("y" 0) ("dx" 1) ("dy" 1) ("track" 0))) ("Thread" NIL) ("Object" (("monitor" 0) ("mcount" 0) ("wait-set" 0))))))) (:CT ((CLASS (:NAME "Object") (:SUPERS NIL) (:FIELDS ("monitor" "mcount" "wait-set")) (:METHODS NIL)) (CLASS (:NAME "Thread") (:SUPERS ("Object")) (:FIELDS NIL) (:METHODS ((METHOD (:NAME "run") (:FORMALS NIL) (:SYNC NIL) (:CODE ((RETURN))) (:XTBL NIL)) (METHOD (:NAME "start") (:FORMALS NIL) (:SYNC NIL) (:CODE NIL) (:XTBL NIL)) (METHOD (:NAME "stop") (:FORMALS NIL) (:SYNC NIL) (:CODE NIL) (:XTBL NIL))))) (CLASS (:NAME "Track") (:SUPERS ("Object")) (:FIELDS ("x" "y" "prev")) (:METHODS NIL)) (CLASS (:NAME "Point") (:SUPERS ("Thread" "Object")) (:FIELDS ("x" "y" "dx" "dy" "track")) (:METHODS ((METHOD (:NAME "move") (:FORMALS NIL) (:SYNC NIL) (:CODE ((NEW "Track") ; 0 (DUP) ; 1 (STORE 1) ; 2 (LOAD 0) ; 3 (GETFIELD ("Point" "x")) ; 4 (PUTFIELD ("Track" "x")) ; 5 (LOAD 1) ; 6 (LOAD 0) ; 7 (GETFIELD ("Point" "y")) ; 8 (PUTFIELD ("Track" "y")) ; 9 (LOAD 1) ; 10 (LOAD 0) ; 11 (GETFIELD ("Point" "track")) ; 12 (PUTFIELD ("Track" "prev")) ; 13 (LOAD 0) ; 14 (LOAD 1) ; 15 (PUTFIELD ("Point" "track")) ; 16 (LOAD 0) ; 17 (DUP) ; 18 (GETFIELD ("Point" "x")) ; 19 (LOAD 0) ; 20 (GETFIELD ("Point" "dx")) ; 21 (ADD) ; 22 (PUTFIELD ("Point" "x")) ; 23 (LOAD 0) ; 24 (DUP) ; 25 (GETFIELD ("Point" "y")) ; 26 (LOAD 0) ; 27 (GETFIELD ("Point" "dy")) ; 28 (ADD) ; 29 (PUTFIELD ("Point" "y")) ; 30 (RETURN))) ; 31 (:XTBL NIL)) (METHOD (:NAME "run") (:FORMALS NIL) (:SYNC NIL) (:CODE ((LOAD 0) ; 0 (INVOKEVIRTUAL ("Point" "move" 0)) ; 1 (GOTO -2))) ; 2 (:XTBL NIL))))) (CLASS (:NAME "FastPoint") (:SUPERS ("Point" "Thread" "Object")) (:FIELDS NIL) (:METHODS ((METHOD (:NAME "move") (:FORMALS NIL) (:SYNC NIL) (:CODE ((LOAD 0) ; 0 (INVOKESPECIAL ("Point" "move" 0)) ; 1 (LOAD 0) ; 2 (DUP) ; 3 (GETFIELD ("Point" "dx")) ; 4 (CONST 1) ; 5 (ADD) ; 6 (PUTFIELD ("Point" "dx")) ; 7 (LOAD 0) ; 8 (DUP) ; 9 (GETFIELD ("Point" "dy")) ; 10 (CONST 1) ; 11 (ADD) ; 12 (PUTFIELD ("Point" "dy")) ; 13 (RETURN))) ; 14 (:XTBL NIL))))) (CLASS (:NAME "Top") (:SUPERS ("Object")) (:FIELDS NIL) (:METHODS ((METHOD (:NAME "main") (:FORMALS NIL) (:SYNC NIL) (:CODE ((NEW "Point") ; 0 (DUP) ; 1 (STORE 0) ; 2 (CONST 1) ; 3 (PUTFIELD ("Point" "dx")) ; 4 (LOAD 0) ; 5 (CONST 1) ; 6 (PUTFIELD ("Point" "dy")) ; 7 (LOAD 0) ; 8 (INVOKEVIRTUAL ("Thread" "start" 0)); 9 (NEW "FastPoint") ; 10 (GOTO -10))) ; 11 (:XTBL NIL))))))))