Add DebugDock.java
authormegacz <adam@megacz.com>
Sat, 13 Dec 2008 05:37:35 +0000 (21:37 -0800)
committermegacz <adam@megacz.com>
Sat, 13 Dec 2008 05:37:35 +0000 (21:37 -0800)
src/edu/berkeley/fleet/interpreter/DebugDock.java [new file with mode: 0644]

diff --git a/src/edu/berkeley/fleet/interpreter/DebugDock.java b/src/edu/berkeley/fleet/interpreter/DebugDock.java
new file mode 100644 (file)
index 0000000..8bba7df
--- /dev/null
@@ -0,0 +1,58 @@
+package edu.berkeley.fleet.interpreter;
+import java.util.*;
+import edu.berkeley.fleet.two.*;
+import edu.berkeley.fleet.api.*;
+import edu.berkeley.fleet.api.Instruction;
+import static edu.berkeley.fleet.api.Predicate.*;
+
+/** EXPERIMENTAL -- DO NOT RELY ON THIS INTERFACE */
+public class DebugDock {
+    final InterpreterDock dock;
+
+    public DebugDock(Dock d) {
+        dock = (InterpreterDock)d;
+    }
+
+    public Dock getDock()                   { return dock; }
+    public int getOLC()                     { return dock.olc; }
+    public int getILC()                     { return dock.ilc; }
+    public Instruction getExecuting()       { return dock.executing; }
+    public Queue<Instruction> getInstructions() { return dock.instructions; }
+    public Queue<Instruction> getEpilogue() { return dock.epilogue; }
+    public boolean getDataReadyForShip()    { return dock.dataReadyForShip; }
+    public boolean getReadyForDataFromShip(){ return dock.readyForDataFromShip;}
+    public long getDataFromShip()           { return dock.dataFromShip; }
+    public boolean getTorpedoWaiting()      { return dock.torpedoWaiting; }
+    public boolean isHatchOpen()            { return dock.hatchIsOpen; }
+    public boolean isInputDock()            { return dock.hatchIsOpen; }
+    public boolean getFlagA()               { return dock.flag_a; }
+    public boolean getFlagB()               { return dock.flag_b; }
+    public boolean getFlagC()               { return dock.flag_c; }
+    public BitVector getDataLatch()         { return dock.dataLatch; }
+    public Queue<BitVector> getDataDestPackets() {
+        Queue<BitVector> values = new LinkedList<BitVector>();
+        for (Packet p : dock.dataDestination.packets) {
+            if (p.isToken)
+                continue;
+            values.add(p.value);
+        }
+        return values;
+    }
+    public Queue<Instruction> getInstructionsInFabric() {
+        Queue<Instruction> instr = new LinkedList<Instruction>();
+
+        for (Packet p : dock.instructionDestination.packets) {
+            if (p.isToken)
+                continue;
+
+            BitVector bv = p.value;
+            long val = 0;
+            for(int i=0; i<bv.length(); i++)
+                if (bv.get(i))
+                    val |= (1L << i);
+            instr.add(dock.getInterpreter().readInstruction(val, dock));
+        }
+
+        return instr;
+    }
+}