From: yeom <yeom>
Date: Tue, 6 Dec 2011 00:00:35 +0000 (+0000)
Subject: new analysis found one shared location that is not overwritten in the eyetracking... 
X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=bc9ee1fd50c62e8900a6b8a4f8e6151013cd32c8;p=IRC.git

new analysis found one shared location that is not overwritten in the eyetracking benchmark, fixed it.
---

diff --git a/Robust/src/Benchmarks/SSJava/EyeTracking/Counter.java b/Robust/src/Benchmarks/SSJava/EyeTracking/Counter.java
new file mode 100644
index 00000000..a5a4ac3e
--- /dev/null
+++ b/Robust/src/Benchmarks/SSJava/EyeTracking/Counter.java
@@ -0,0 +1,15 @@
+public class Counter {
+
+  static int idx = 0;
+
+  @TRUST
+  static boolean inc() {
+    idx++;
+  }
+
+  @TRUST
+  static int idx() {
+    return idx;
+  }
+
+}
diff --git a/Robust/src/Benchmarks/SSJava/EyeTracking/DeviationScanner.java b/Robust/src/Benchmarks/SSJava/EyeTracking/DeviationScanner.java
index c3749fd7..7d5dab74 100644
--- a/Robust/src/Benchmarks/SSJava/EyeTracking/DeviationScanner.java
+++ b/Robust/src/Benchmarks/SSJava/EyeTracking/DeviationScanner.java
@@ -43,12 +43,8 @@ public class DeviationScanner {
   public static final int DOWN = 7;
   public static final int RIGHT_DOWN = 8;
 
-  @LOC("DEV")
-  private int size;
-
   public DeviationScanner() {
     eyePositions = new EyePosition[3];
-    size = 0;
   }
 
   @LATTICE("THIS<C,C<IN,THISLOC=THIS")
@@ -62,65 +58,57 @@ public class DeviationScanner {
 
     SSJAVA.append(eyePositions, eyePosition);
 
-    if (size < eyePositions.length) {
-      size++;
-    }else{
-      size= eyePositions.length;
-    }
-
-  }
-
-  @RETURNLOC("THIS,DeviationScanner.DEV")
-  public int getEyePositionsSize() {
-    return size;
   }
 
   // @LATTICE("OUT<DEV,DEV<C,C<THIS,THIS<IN,C*,DEV*,OUT*,THISLOC=THIS,RETURNLOC=OUT")
-  @LATTICE("THIS<IN,THISLOC=THIS")
+  @LATTICE("THIS<C,THIS<IN,THISLOC=THIS,C*")
   @RETURNLOC("THIS,DeviationScanner.DEV")
   public int scanForDeviation(@LOC("IN") Rectangle2D faceRect) {
     @LOC("THIS,DeviationScanner.DEV") int deviation = NONE;
-    if (getEyePositionsSize() >= 3) {
-      @LOC("THIS,DeviationScanner.DEV") double deviationX = 0;
-      @LOC("THIS,DeviationScanner.DEV") double deviationY = 0;
-
-      @LOC("THIS,DeviationScanner.DEV") int lastIdx = -1;
-      for (@LOC("THIS,DeviationScanner.DEV") int i = 0; i < 3; ++i) {
-        if (lastIdx != -1) {
-          deviationX += (eyePositions[i].getX() - eyePositions[lastIdx].getX());
-          deviationY += (eyePositions[i].getY() - eyePositions[lastIdx].getY());
-        }
-        lastIdx = i;
+
+    for (@LOC("C") int i = 0; i < 3; i++) {
+      if (eyePositions[i] == null) {
+        return deviation;
       }
+    }
+
+    @LOC("THIS,DeviationScanner.DEV") double deviationX = 0;
+    @LOC("THIS,DeviationScanner.DEV") double deviationY = 0;
 
-      @LOC("THIS,DeviationScanner.DEV") final double deviationPercentX = 0.04;
-      @LOC("THIS,DeviationScanner.DEV") final double deviationPercentY = 0.04;
+    @LOC("THIS,DeviationScanner.DEV") int lastIdx = -1;
+    for (@LOC("THIS,DeviationScanner.DEV") int i = 0; i < 3; ++i) {
+      if (lastIdx != -1) {
+        deviationX += (eyePositions[i].getX() - eyePositions[lastIdx].getX());
+        deviationY += (eyePositions[i].getY() - eyePositions[lastIdx].getY());
+      }
+      lastIdx = i;
+    }
 
-      deviationX /= faceRect.getWidth();
-      deviationY /= faceRect.getWidth();
+    @LOC("THIS,DeviationScanner.DEV") final double deviationPercentX = 0.04;
+    @LOC("THIS,DeviationScanner.DEV") final double deviationPercentY = 0.04;
 
-      @LOC("THIS,DeviationScanner.DEV") int deviationAbsoluteX = 0;
-      @LOC("THIS,DeviationScanner.DEV") int deviationAbsoluteY = 0;
-      if (deviationX > deviationPercentX)
-        deviationAbsoluteX = 1;
-      if (deviationX < -deviationPercentX)
-        deviationAbsoluteX = -1;
-      if (deviationY > deviationPercentY)
-        deviationAbsoluteY = 1;
-      if (deviationY < -deviationPercentY)
-        deviationAbsoluteY = -1;
+    deviationX /= faceRect.getWidth();
+    deviationY /= faceRect.getWidth();
 
-      deviation = getDirectionFor(deviationAbsoluteX, deviationAbsoluteY);
+    @LOC("THIS,DeviationScanner.DEV") int deviationAbsoluteX = 0;
+    @LOC("THIS,DeviationScanner.DEV") int deviationAbsoluteY = 0;
+    if (deviationX > deviationPercentX)
+      deviationAbsoluteX = 1;
+    if (deviationX < -deviationPercentX)
+      deviationAbsoluteX = -1;
+    if (deviationY > deviationPercentY)
+      deviationAbsoluteY = 1;
+    if (deviationY < -deviationPercentY)
+      deviationAbsoluteY = -1;
 
-      if (deviation != NONE) {
-        eyePositions = new EyePosition[3];
-        size = 0;
-      }
-      // System.out.println(String.format("%.2f%% | %.2f%% => %d and %d >>> %s",
-      // deviationX*100, deviationY*100, deviationAbsoluteX, deviationAbsoluteY,
-      // deviation.toString()));
+    deviation = getDirectionFor(deviationAbsoluteX, deviationAbsoluteY);
 
+    if (deviation != NONE) {
+      eyePositions = new EyePosition[3];
     }
+    // System.out.println(String.format("%.2f%% | %.2f%% => %d and %d >>> %s",
+    // deviationX*100, deviationY*100, deviationAbsoluteX, deviationAbsoluteY,
+    // deviation.toString()));
 
     return deviation;
   }
@@ -154,7 +142,6 @@ public class DeviationScanner {
   public void clear() {
     System.out.println("CLEAR");
     eyePositions = new EyePosition[3];
-    size = 0;
   }
 
   public String toStringDeviation(@LOC("IN") int dev) {
diff --git a/Robust/src/Benchmarks/SSJava/EyeTracking/LEA.java b/Robust/src/Benchmarks/SSJava/EyeTracking/LEA.java
index ea5f7e08..d8e593c7 100644
--- a/Robust/src/Benchmarks/SSJava/EyeTracking/LEA.java
+++ b/Robust/src/Benchmarks/SSJava/EyeTracking/LEA.java
@@ -94,9 +94,10 @@ public class LEA {
 
     @LOC("C") int i = 0;
 
-    SSJAVA: while (i < 37) {
-      @LOC("IMG") Image image = ImageReader.readImage("data/b" + i + ".bmp");
-      i++;
+    SSJAVA: while (Counter.idx() < 37) {
+      @LOC("IMG") Image image = ImageReader.readImage("data/b" + Counter.idx() + ".bmp");
+      Counter.inc();
+      // i++;
       if (image == null) {
         break;
       }
@@ -109,15 +110,15 @@ public class LEA {
 
   private void processImage(@LOC("IN") Image image) {
     @LOC("THIS,LEA.POS") FaceAndEyePosition positions = implementation.getEyePosition(image);
-//    if (positions.getEyePosition() != null) {
-      deviationScanner.addEyePosition(positions.getEyePosition());
-      @LOC("THIS,LEA.DEV,DeviationScanner.DEV") int deviation =
-          deviationScanner.scanForDeviation(positions.getFacePosition());// positions.getEyePosition().getDeviation(lastPositions.getEyePosition());
-      if (deviation != DeviationScanner.NONE) {
-        System.out.println("deviation=" + deviationScanner.toStringDeviation(deviation));
-        // notifyEyeMovementListenerEyeMoved(deviation);
-      }
-//    }
+    // if (positions.getEyePosition() != null) {
+    deviationScanner.addEyePosition(positions.getEyePosition());
+    @LOC("THIS,LEA.DEV,DeviationScanner.DEV") int deviation =
+        deviationScanner.scanForDeviation(positions.getFacePosition());// positions.getEyePosition().getDeviation(lastPositions.getEyePosition());
+    if (deviation != DeviationScanner.NONE) {
+      System.out.println("deviation=" + deviationScanner.toStringDeviation(deviation));
+      // notifyEyeMovementListenerEyeMoved(deviation);
+    }
+    // }
     lastPositions = positions;
   }