From cffe02bb9689114c3dd741876139ce9a60bba273 Mon Sep 17 00:00:00 2001 From: Adam Megacz Date: Sat, 22 Aug 2009 14:33:06 -0700 Subject: [PATCH] add InterpreterDock.dumpState() --- .../fleet/interpreter/InterpreterDock.java | 48 ++++++++++++++++++-- 1 file changed, 45 insertions(+), 3 deletions(-) diff --git a/src/edu/berkeley/fleet/interpreter/InterpreterDock.java b/src/edu/berkeley/fleet/interpreter/InterpreterDock.java index c2d3ed6..a08531c 100644 --- a/src/edu/berkeley/fleet/interpreter/InterpreterDock.java +++ b/src/edu/berkeley/fleet/interpreter/InterpreterDock.java @@ -2,6 +2,7 @@ package edu.berkeley.fleet.interpreter; import java.util.*; import edu.berkeley.fleet.two.*; import edu.berkeley.fleet.api.*; +import edu.berkeley.sbp.util.ANSI; /** anything that has a source (instruction horn) address on the switch fabric */ class InterpreterDock extends FleetTwoDock { @@ -21,14 +22,16 @@ class InterpreterDock extends FleetTwoDock { boolean torpedoWaiting = false; boolean flushing = false; - Queue instructions = new LinkedList(); - Queue dataPackets = new LinkedList(); + LinkedList instructions = new LinkedList(); + LinkedList dataPackets = new LinkedList(); // HACK - private Queue instructionsBackedUpIntoSwitchFabric = new LinkedList(); + private LinkedList instructionsBackedUpIntoSwitchFabric = new LinkedList(); boolean dataReadyForShip = false; boolean readyForDataFromShip = true; + + // FIXME: should be a BitVector long dataFromShip; boolean flagCFromShip; @@ -273,4 +276,43 @@ class InterpreterDock extends FleetTwoDock { dataFromShip = data; flagCFromShip = pending_flag_c; } + + + // Debugging ////////////////////////////////////////////////////////////////////////////// + + public void dumpState() { + if (instructions.size()==0 && + dataPackets.size()==0 && + instructionsBackedUpIntoSwitchFabric.size()==0 && + !requeueStageHasTailInstruction && + !requeueStageInCirculatingState && + !torpedoWaiting && + !flushing && + !dataReadyForShip && + readyForDataFromShip) + return; + System.out.println("state of "+ANSI.green(this)+": "+ + (ilc==1?"":("[ilc="+(ilc==-1 ? "*" : (ilc+""))+"] "))+ + (olc==1?"":("[olc="+olc+"] "))+ + (flag_a?"[a] ":"")+ + (flag_b?"[b] ":"")+ + (flag_c?"[c] ":"")+ + (flag_d?"[d] ":"")+ + (requeueStageInCirculatingState?"[recirculating] ":"")+ + (requeueStageHasTailInstruction?"[tail waiting] ":"")+ + (torpedoWaiting?"[torpedo waiting] ":"")+ + (flushing?"[flushing] ":"") + ); + if (!readyForDataFromShip) + System.out.println(ANSI.cyan(" ship has proffered: " + dataFromShip)); + if (dataReadyForShip) + System.out.println(ANSI.cyan(" waiting for ship to accept: " + dataLatch.toLong())); + for(Instruction i : instructions) + System.out.println(ANSI.red(" "+i)); + for(Instruction i : instructionsBackedUpIntoSwitchFabric) + System.out.println(ANSI.red(ANSI.bold(" "+i+" BACKED UP"))); + for(Packet p : dataPackets) + System.out.println(ANSI.cyan(" "+p)); + } + } -- 1.7.10.4