--- /dev/null
+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;
+ }
+}