1 package edu.berkeley.fleet.interpreter.ships;
2 import edu.berkeley.fleet.interpreter.*;
4 import edu.berkeley.fleet.*;
8 public class MemoryReadShip extends InterpreterShip {
10 boolean _loaded = false;
15 DataInbox addr = new DataInbox(this, "addr");
16 DataInbox stride = new DataInbox(this, "stride");
17 DataInbox count = new DataInbox(this, "count");
18 DataOutbox data = new DataOutbox(this, "data");
19 TokenOutbox done = new TokenOutbox(this, "done");
21 public MemoryReadShip(Interpreter fleet, String name) {
25 public void service() {
27 if (!data.readyForDataFromShip()) return;
28 data.addDataFromShip(_addr>=getInterpreter().mem.length ? 0 : getInterpreter().mem[_addr]);
32 done.addTokenFromShip();
34 if (count.dataReadyForShip() &&
35 addr.dataReadyForShip() &&
36 stride.dataReadyForShip() &&
37 done.readyForTokenFromShip() &&
38 data.readyForDataFromShip()) {
40 _count = count.removeDataForShip();
41 _addr = addr.removeDataForShip();
42 _stride = stride.removeDataForShip();